forked from elmau/empresa-libre
commit
3424f7f78a
|
@ -1,3 +1,9 @@
|
||||||
|
v 1.9.0 [18-jun-2018]
|
||||||
|
---------------------
|
||||||
|
- Se agrega la vista del detalle de facturas
|
||||||
|
- Fix: Al timbrar nómina
|
||||||
|
|
||||||
|
|
||||||
v 1.8.1 [14-jun-2018]
|
v 1.8.1 [14-jun-2018]
|
||||||
---------------------
|
---------------------
|
||||||
- Fix: Se agrega una barra de desplazamiento al buscar productos o clientes
|
- Fix: Se agrega una barra de desplazamiento al buscar productos o clientes
|
||||||
|
|
|
@ -124,7 +124,7 @@ class CFDI(object):
|
||||||
if datos['donativo']:
|
if datos['donativo']:
|
||||||
self._donativo = True
|
self._donativo = True
|
||||||
|
|
||||||
self._edu = datos['edu']
|
self._edu = datos.get('edu', False)
|
||||||
|
|
||||||
if datos['complementos']:
|
if datos['complementos']:
|
||||||
if 'ine' in datos['complementos']:
|
if 'ine' in datos['complementos']:
|
||||||
|
|
|
@ -48,7 +48,7 @@ try:
|
||||||
from com.sun.star.awt import Size
|
from com.sun.star.awt import Size
|
||||||
from com.sun.star.view.PaperFormat import LETTER
|
from com.sun.star.view.PaperFormat import LETTER
|
||||||
APP_LIBO = True
|
APP_LIBO = True
|
||||||
except:
|
except ImportError:
|
||||||
APP_LIBO = False
|
APP_LIBO = False
|
||||||
|
|
||||||
import pyqrcode
|
import pyqrcode
|
||||||
|
@ -1469,12 +1469,13 @@ def import_employees(rfc):
|
||||||
if not is_file(path):
|
if not is_file(path):
|
||||||
return ()
|
return ()
|
||||||
|
|
||||||
|
msg = 'LibreOffice no se pudo iniciar'
|
||||||
if APP_LIBO:
|
if APP_LIBO:
|
||||||
app = LIBO()
|
app = LIBO()
|
||||||
if app.is_running:
|
if app.is_running:
|
||||||
return app.employees(path)
|
return app.employees(path)
|
||||||
|
|
||||||
return ()
|
return (), msg
|
||||||
|
|
||||||
|
|
||||||
def import_nomina(rfc):
|
def import_nomina(rfc):
|
||||||
|
|
|
@ -3585,6 +3585,9 @@ class Facturas(BaseModel):
|
||||||
if values['opt'] == 'reinvoice':
|
if values['opt'] == 'reinvoice':
|
||||||
return self._get_reinvoice(self, int(values['id']))
|
return self._get_reinvoice(self, int(values['id']))
|
||||||
|
|
||||||
|
if values['opt'] == 'detalle':
|
||||||
|
return FacturasDetalle.get_detalle(int(values['id']))
|
||||||
|
|
||||||
cfdis = util.loads(values['cfdis'])
|
cfdis = util.loads(values['cfdis'])
|
||||||
|
|
||||||
if values['year'] == '-1':
|
if values['year'] == '-1':
|
||||||
|
@ -4955,6 +4958,24 @@ class FacturasDetalle(BaseModel):
|
||||||
data.append({'row': row, 'taxes': impuestos})
|
data.append({'row': row, 'taxes': impuestos})
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_detalle(cls, id):
|
||||||
|
data = []
|
||||||
|
products = FacturasDetalle.select().where(FacturasDetalle.factura==id)
|
||||||
|
for p in reversed(products):
|
||||||
|
row = {'id_product': p.producto.id}
|
||||||
|
row['clave'] = p.clave
|
||||||
|
row['clave_sat'] = p.clave_sat
|
||||||
|
row['descripcion'] = p.descripcion
|
||||||
|
row['unidad'] = p.producto.unidad.name
|
||||||
|
row['cantidad'] = p.cantidad
|
||||||
|
row['valor_unitario'] = p.valor_unitario
|
||||||
|
row['descuento'] = p.descuento
|
||||||
|
pf = p.valor_unitario - p.descuento
|
||||||
|
row['importe'] = round(pf * p.cantidad, DECIMALES)
|
||||||
|
data.append(row)
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
class PreFacturasDetalle(BaseModel):
|
class PreFacturasDetalle(BaseModel):
|
||||||
factura = ForeignKeyField(PreFacturas)
|
factura = ForeignKeyField(PreFacturas)
|
||||||
|
|
|
@ -31,7 +31,7 @@ except ImportError:
|
||||||
|
|
||||||
|
|
||||||
DEBUG = DEBUG
|
DEBUG = DEBUG
|
||||||
VERSION = '1.8.1'
|
VERSION = '1.9.0'
|
||||||
EMAIL_SUPPORT = ('soporte@empresalibre.net',)
|
EMAIL_SUPPORT = ('soporte@empresalibre.net',)
|
||||||
TITLE_APP = '{} v{}'.format(TITLE_APP, VERSION)
|
TITLE_APP = '{} v{}'.format(TITLE_APP, VERSION)
|
||||||
|
|
||||||
|
|
|
@ -88,3 +88,17 @@
|
||||||
font-size: 1.5vw;
|
font-size: 1.5vw;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.table_sg .webix_hcell{
|
||||||
|
background: #A64C4C;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
}
|
||||||
|
.table_sg .webix_column{
|
||||||
|
font-style: italic;
|
||||||
|
background: #FFF8DC;
|
||||||
|
}
|
||||||
|
.table_sg .webix_column > div{
|
||||||
|
border-color: #ddd;
|
||||||
|
}
|
||||||
|
|
|
@ -34,6 +34,8 @@ var invoices_controllers = {
|
||||||
$$('grid_invoices').attachEvent('onItemClick', grid_invoices_click)
|
$$('grid_invoices').attachEvent('onItemClick', grid_invoices_click)
|
||||||
$$('grid_invoices').attachEvent('onSelectChange', grid_invoices_on_select_change)
|
$$('grid_invoices').attachEvent('onSelectChange', grid_invoices_on_select_change)
|
||||||
$$('grid_invoices').attachEvent('onHeaderClick', grid_invoices_on_header_click)
|
$$('grid_invoices').attachEvent('onHeaderClick', grid_invoices_on_header_click)
|
||||||
|
$$('grid_invoices').attachEvent('onSubViewCreate', grid_invoices_on_subview_create)
|
||||||
|
|
||||||
$$('filter_year').attachEvent('onChange', filter_year_change)
|
$$('filter_year').attachEvent('onChange', filter_year_change)
|
||||||
$$('filter_month').attachEvent('onChange', filter_month_change)
|
$$('filter_month').attachEvent('onChange', filter_month_change)
|
||||||
$$('filter_dates').attachEvent('onChange', filter_dates_change)
|
$$('filter_dates').attachEvent('onChange', filter_dates_change)
|
||||||
|
@ -2212,8 +2214,18 @@ function cmd_invoice_verify_sat_click(){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function cmd_preinvoice_generate_delete_click(){
|
function grid_invoices_on_subview_create(view, item){
|
||||||
|
var values = {'opt': 'detalle', 'id': item.id}
|
||||||
|
webix.ajax().get('/invoices', values, {
|
||||||
|
error: function(text, data, xhr) {
|
||||||
|
msg_error('Error al consultar')
|
||||||
|
},
|
||||||
|
success: function(text, data, xhr) {
|
||||||
|
view.parse(data.json(), 'json')
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function cmd_preinvoice_generate_delete_click(){
|
||||||
}
|
}
|
|
@ -162,7 +162,7 @@ var body_cfdi_notes = {rows: [
|
||||||
label: 'Guardar y Cerrar', type: 'iconButton', hotkey: 'Ctrl+enter'},
|
label: 'Guardar y Cerrar', type: 'iconButton', hotkey: 'Ctrl+enter'},
|
||||||
{}]},
|
{}]},
|
||||||
{minHeight: 5, maxHeight: 5},
|
{minHeight: 5, maxHeight: 5},
|
||||||
]}
|
],}
|
||||||
|
|
||||||
|
|
||||||
var win_invoice_notes = {
|
var win_invoice_notes = {
|
||||||
|
@ -241,8 +241,8 @@ var grid_invoices_cols = [
|
||||||
{id: 'index', header: '#', adjust: 'data', css: 'right',
|
{id: 'index', header: '#', adjust: 'data', css: 'right',
|
||||||
footer: {content: 'countRows', colspan: 3, css: 'right'}},
|
footer: {content: 'countRows', colspan: 3, css: 'right'}},
|
||||||
{id: "id", header:"ID", hidden:true},
|
{id: "id", header:"ID", hidden:true},
|
||||||
{id: "serie", header: ["Serie", {content: "selectFilter"}], adjust: "data",
|
{id: 'serie', header: ["Serie", {content: "selectFilter"}], adjust: "data",
|
||||||
sort:"string"},
|
sort: 'string', template: '{common.subrow()} #serie#'},
|
||||||
{id: 'folio', header: ['Folio', {content: 'numberFilter'}], adjust: 'data',
|
{id: 'folio', header: ['Folio', {content: 'numberFilter'}], adjust: 'data',
|
||||||
sort: 'int', css: 'right', footer: {text: 'Facturas', colspan: 3}},
|
sort: 'int', css: 'right', footer: {text: 'Facturas', colspan: 3}},
|
||||||
{id: "uuid", header: ["UUID", {content: "textFilter"}], adjust: "data",
|
{id: "uuid", header: ["UUID", {content: "textFilter"}], adjust: "data",
|
||||||
|
@ -268,9 +268,41 @@ var grid_invoices_cols = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
var sv_grid_invoices = {
|
||||||
|
borderless: true,
|
||||||
|
view: 'datatable',
|
||||||
|
headerRowHeight: 25,
|
||||||
|
columns: [
|
||||||
|
{id: 'id_product', header: 'id_product', hidden: true},
|
||||||
|
{id: "clave", header:{text: 'Clave', css: 'center'}, width: 100,
|
||||||
|
adjust: 'data'},
|
||||||
|
{id: "clave_sat", hidden: true},
|
||||||
|
{id: "descripcion", header:{text: 'Descripción', css: 'center'},
|
||||||
|
fillspace: true},
|
||||||
|
{id: "pedimento", header: 'Pedimento', hidden: true},
|
||||||
|
{id: "id_student", header: 'ID_Alumno', hidden: true},
|
||||||
|
{id: 'student', header: 'Alumno', hidden: true, width: 150},
|
||||||
|
{id: "unidad", header:{text: 'Unidad', css: 'center'}, width: 100},
|
||||||
|
{id: 'cantidad', header: {text: 'Cantidad', css: 'center'}, width: 100,
|
||||||
|
format: webix.i18n.numberFormat, css: 'right'},
|
||||||
|
{id: "valor_unitario", header:{text: 'Valor Unitario', css: 'center'},
|
||||||
|
width: 100, format: webix.i18n.priceFormat, css: 'right'},
|
||||||
|
{id: 'descuento', header:{text: 'Descuento', css: 'center'},
|
||||||
|
width: 80, format: webix.i18n.priceFormat, css: 'right'},
|
||||||
|
{id: 'precio_final', hidden: true, header: 'precio_final', width: 80,
|
||||||
|
format: webix.i18n.priceFormat, css: 'right'},
|
||||||
|
{id: "importe", header:{text: 'Importe', css: 'center'}, width: 150,
|
||||||
|
format: webix.i18n.priceFormat, css: 'right'},
|
||||||
|
],
|
||||||
|
scrollX: false,
|
||||||
|
autoheight: true,
|
||||||
|
css: 'table_sg',
|
||||||
|
}
|
||||||
|
|
||||||
var grid_invoices = {
|
var grid_invoices = {
|
||||||
view: 'datatable',
|
view: 'datatable',
|
||||||
id: 'grid_invoices',
|
id: 'grid_invoices',
|
||||||
|
subview: sv_grid_invoices,
|
||||||
select: 'row',
|
select: 'row',
|
||||||
multiselect: true,
|
multiselect: true,
|
||||||
adjust: true,
|
adjust: true,
|
||||||
|
|
Loading…
Reference in New Issue