Cuentas Banco UI

This commit is contained in:
Mauricio Baeza 2017-11-16 22:49:17 -06:00
parent 960ba21467
commit c8f7554ff6
12 changed files with 266 additions and 33 deletions

View File

@ -258,7 +258,7 @@ class AppCuentasBanco(object):
def on_get(self, req, resp):
values = req.params
session = req.env['beaker.session']
#~ req.context['result'] = self._db.get_emisor(session['rfc'])
req.context['result'] = self._db.get_cuentasbanco(values)
resp.status = falcon.HTTP_200
def on_post(self, req, resp):

View File

@ -1535,6 +1535,8 @@ class ImportFacturaLibre(object):
new = {t: row[s] for s, t in fields}
if not new['uuid']:
new['uuid'] = None
if new['xml'] is None:
new['xml'] = ''
if row['estatus'] == 'Pagada':
new['pagada'] = True
elif row['estatus'] == 'Cancelada':

View File

@ -217,6 +217,9 @@ class StorageEngine(object):
def cuentasbanco(self, values):
return main.CuentasBanco.add(values)
def get_cuentasbanco(self, values):
return main.CuentasBanco.get_(values)
def get_folios(self):
return main.Folios.get_()

View File

@ -914,6 +914,21 @@ class CuentasBanco(BaseModel):
def __str__(self):
return '{} ({})'.format(self.banco.name, self.cuenta[-4:])
@classmethod
def get_(cls, values):
if values['tipo'] == '1':
rows = (CuentasBanco
.select(
CuentasBanco.id,
str(CuentasBanco))
.where(CuentasBanco.de_emisor==True)
.dicts()
)
print (tuple(rows))
return {'ok': True, 'rows': tuple(rows)}
return
@classmethod
def emisor(cls):
rows = (CuentasBanco
@ -968,6 +983,52 @@ class CuentasBanco(BaseModel):
return data
class BancoMovimientos(BaseModel):
cuenta = ForeignKeyField(CuentasBanco)
fecha = DateTimeField(default=util.now, formats=['%Y-%m-%d %H:%M:%S'])
movimiento = IntegerField(default=0)
descripcion = TextField(default='')
forma_pago = ForeignKeyField(SATFormaPago)
retiro = DecimalField(default=0.0, max_digits=20, decimal_places=6,
auto_round=True)
deposito = DecimalField(default=0.0, max_digits=20, decimal_places=6,
auto_round=True)
saldo = DecimalField(default=0.0, max_digits=20, decimal_places=6,
auto_round=True)
moneda = TextField(default='MXN') # Complemento de pagos
tipo_cambio = DecimalField(default=1.0, max_digits=15, decimal_places=6,
auto_round=True)
numero_operacion = TextField(default='')
origen_rfc = TextField(default='')
origen_nombre = TextField(default='')
origen_cuenta = TextField(default='')
destino_rfc = TextField(default='')
destino_cuenta = TextField(default='')
tipo_cadena_pago = TextField(default='')
certificado_pago = TextField(default='')
cadena_pago = TextField(default='')
sello_pago = TextField(default='')
class Meta:
order_by = ('fecha',)
indexes = (
(('cuenta', 'movimiento'), True),
)
class CfdiPagos(BaseModel):
movimiento = ForeignKeyField(BancoMovimientos)
xml = TextField(default='')
uuid = UUIDField(null=True)
estatus = TextField(default='Guardado')
estatus_sat = TextField(default='')
notas = TextField(default='')
cancelado = BooleanField(default=False)
class Meta:
order_by = ('movimiento',)
class SATUsoCfdi(BaseModel):
key = TextField(index=True, unique=True)
name = TextField(default='', index=True)
@ -2523,6 +2584,17 @@ class FacturasRelacionadas(BaseModel):
return [str(r.factura_origen.uuid) for r in query]
class CfdiPagosFacturas(BaseModel):
pago = ForeignKeyField(CfdiPagos)
factura = ForeignKeyField(Facturas)
class Meta:
order_by = ('pago',)
indexes = (
(('pago', 'factura'), True),
)
class PreFacturasRelacionadas(BaseModel):
factura = ForeignKeyField(PreFacturas, related_name='original')
factura_origen = ForeignKeyField(PreFacturas, related_name='relacion')
@ -2665,6 +2737,23 @@ class FacturasImpuestos(BaseModel):
)
class FacturasPagos(BaseModel):
factura = ForeignKeyField(Facturas)
numero = IntegerField(default=1)
saldo_anterior = DecimalField(default=0.0, max_digits=20, decimal_places=6,
auto_round=True)
importe = DecimalField(default=0.0, max_digits=18, decimal_places=6,
auto_round=True)
saldo = DecimalField(default=0.0, max_digits=18, decimal_places=6,
auto_round=True)
class Meta:
order_by = ('factura',)
indexes = (
(('factura', 'numero'), True),
)
class PreFacturasImpuestos(BaseModel):
factura = ForeignKeyField(PreFacturas)
impuesto = ForeignKeyField(SATImpuestos)
@ -2815,13 +2904,15 @@ def _init_values(rfc):
def _crear_tablas(rfc):
tablas = [Addendas, Categorias, Certificado, CondicionesPago, Configuracion,
Emisor, Facturas, FacturasDetalle, FacturasImpuestos, Folios,
Folios,
Emisor, Facturas, FacturasDetalle, FacturasImpuestos, FacturasPagos,
FacturasRelacionadas, Productos,
PreFacturas, PreFacturasDetalle, PreFacturasImpuestos,
PreFacturasRelacionadas,
SATAduanas, SATFormaPago, SATImpuestos, SATMonedas, SATRegimenes,
SATTipoRelacion, SATUnidades, SATUsoCfdi, SATBancos,
Socios, Tags, Usuarios, CuentasBanco, TipoCambio,
Socios, Tags, Usuarios, CuentasBanco, TipoCambio, BancoMovimientos,
CfdiPagos, CfdiPagosFacturas,
Emisor.regimenes.get_through_model(),
Socios.tags.get_through_model(),
Productos.impuestos.get_through_model(),
@ -3092,7 +3183,8 @@ def _importar_facturas(rows):
'importe': impuesto['importe'],
}
FacturasImpuestos.create(**new)
except IntegrityError:
except IntegrityError as e:
print (e)
msg = '\tFactura: id: {}'.format(row['serie'] + str(row['folio']))
log.error(msg)
log.info('\tFacturas importadas...')

View File

@ -184,7 +184,7 @@ function get_certificado(){
}
function get_cuentas_banco(){
function get_admin_cuentas_banco(){
webix.ajax().get('/values/monedasid', function(text, data){
var values = data.json()
@ -310,7 +310,7 @@ function multi_admin_change(prevID, nextID){
$$('tab_emisor').setValue('Datos Fiscales')
get_emisor()
get_certificado()
get_cuentas_banco()
get_admin_cuentas_banco()
return
}

View File

@ -0,0 +1,41 @@
var msg = ''
var bancos_controllers = {
init: function(){
$$('lst_cuentas_banco').attachEvent('onChange', lst_cuentas_banco_change)
$$('cmd_agregar_retiro').attachEvent('onItemClick', cmd_agregar_retiro_click)
$$('cmd_agregar_deposito').attachEvent('onItemClick', cmd_agregar_deposito_click)
}
}
function get_cuentas_banco(){
webix.ajax().get('/cuentasbanco', {'tipo': 1}, {
error:function(text, data, XmlHttpRequest){
msg = 'Ocurrio un error, consulta a soporte técnico'
msg_error(msg)
},
success:function(text, data, XmlHttpRequest){
var values = data.json()
if(values.ok){
$$('lst_cuentas_banco').getList().parse(values.rows)
$$('lst_cuentas_banco').setValue(values.rows[0].id)
}
}
})
}
function lst_cuentas_banco_change(nv, ov){
show('Cuenta change')
}
function cmd_agregar_retiro_click(){
show('Retiro')
}
function cmd_agregar_deposito_click(){
show('Depósito')
}

View File

@ -65,6 +65,8 @@ var controllers = {
$$('grid_preinvoices').attachEvent('onItemClick', grid_preinvoices_click)
webix.extend($$('grid_invoices'), webix.ProgressBar)
bancos_controllers.init()
}
}
@ -166,6 +168,14 @@ function multi_change(prevID, nextID){
return
}
if(nextID == 'app_bancos'){
active = $$('multi_bancos').getActiveId()
if(active == 'bancos_home'){
get_cuentas_banco()
}
return
}
if(nextID == 'app_invoices'){
active = $$('multi_invoices').getActiveId()
if(active == 'invoices_home'){

View File

@ -15,6 +15,23 @@ var table_usocfdi = db.addCollection('usocfdi')
var table_relaciones = db.addCollection('relaciones')
var months = [
{id: -1, value: 'Todos'},
{id: 1, value: 'Enero'},
{id: 2, value: 'Febrero'},
{id: 3, value: 'Marzo'},
{id: 4, value: 'Abril'},
{id: 5, value: 'Mayo'},
{id: 6, value: 'Junio'},
{id: 7, value: 'Julio'},
{id: 8, value: 'Agosto'},
{id: 9, value: 'Septiembre'},
{id: 10, value: 'Octubre'},
{id: 11, value: 'Noviembre'},
{id: 12, value: 'Diciembre'},
]
function show(values){
webix.message(JSON.stringify(values, null, 2))
}

View File

@ -0,0 +1,78 @@
var toolbar_banco = [
{view: 'richselect', id: 'lst_cuentas_banco', label: 'Cuenta',
labelWidth: 100, options: []},
{view: 'text', id: 'txt_cuenta_moneda', label: 'Moneda', readonly: true},
{view: 'currency', id: 'txt_cuenta_saldo', label: 'Saldo', readonly: true,
inputAlign: 'right', value: 0}
]
var toolbar_filtro_cuenta = [
{view: 'richselect', id: 'filtro_cuenta_year', label: 'Año',
labelAlign: 'right', labelWidth: 50, width: 150, options: []},
{view: 'richselect', id: 'filtro_cuenta_mes', label: 'Mes',
labelAlign: 'right', labelWidth: 50, width: 200, options: months},
{view: 'daterangepicker', id: 'filtro_cuenta_fechas', label: 'Fechas',
labelAlign: 'right', width: 300},
{},
{view: 'button', id: 'cmd_agregar_retiro', label: 'Retiro',
type: 'iconButton', autowidth: true, icon: 'minus'},
{view: 'button', id: 'cmd_agregar_deposito', label: 'Depósito',
type: 'iconButton', autowidth: true, icon: 'plus'},
]
var grid_cuentabanco_cols = [
{id: 'id', header:'ID', hidden: true},
{id: 'fecha', header: 'Fecha', width: 150},
{id: 'numero_operacion', header: 'Referencia'},
{id: 'descripcion', header: ['Descripción', {content: 'textFilter'}],
fillspace:true},
{id: 'retiro', header: ['Retiro', {content: 'numberFilter'}],
width: 125, format: webix.i18n.priceFormat, css: 'right'},
{id: 'deposito', header: ['Depósito', {content: 'numberFilter'}],
width: 125, format: webix.i18n.priceFormat, css: 'right'},
{id: 'saldo', header: ['Saldo'],
width: 125, format: webix.i18n.priceFormat, css: 'right'},
]
var grid_cuentabanco = {
view: 'datatable',
id: 'grid_cuentabanco',
select: 'row',
adjust: true,
footer: true,
resizeColumn: true,
headermenu: true,
columns: grid_cuentabanco_cols,
}
var multi_bancos = {
id: 'multi_bancos',
animate: true,
cells:[
{id: 'bancos_home', rows:[
{view: 'toolbar', elements: toolbar_banco},
{view: 'toolbar', elements: toolbar_filtro_cuenta},
grid_cuentabanco,
]}
//~ {id: 'partners_new', rows:[form_partner]}
],
}
var title_partners = 'Administración de Bancos'
var app_bancos = {
id: 'app_bancos',
rows:[
{view: 'template', id: 'th_bancos', type: 'header',
template: title_partners},
multi_bancos
]
}

View File

@ -1,20 +1,4 @@
var months = [
{id: -1, value: 'Todos'},
{id: 1, value: 'Enero'},
{id: 2, value: 'Febrero'},
{id: 3, value: 'Marzo'},
{id: 4, value: 'Abril'},
{id: 5, value: 'Mayo'},
{id: 6, value: 'Junio'},
{id: 7, value: 'Julio'},
{id: 8, value: 'Agosto'},
{id: 9, value: 'Septiembre'},
{id: 10, value: 'Octubre'},
{id: 11, value: 'Noviembre'},
{id: 12, value: 'Diciembre'},
]
var grid_cfdi_cliente_cols = [
{id: 'index', header: '#', adjust: 'data', css: 'right',
@ -253,15 +237,15 @@ var grid_details_cols = [
fillspace: true, editor: 'text'},
{id: "unidad", header:{text: 'Unidad', css: 'center'}, width: 100},
{id: 'cantidad', header: {text: 'Cantidad', css: 'center'}, width: 100,
format: webix.i18n.numberFormat, css:'right', editor: 'text'},
format: webix.i18n.numberFormat, css: 'right', editor: 'text'},
{id: "valor_unitario", header:{text: 'Valor Unitario', css: 'center'},
width: 100, format: webix.i18n.priceFormat, css:'right', editor: 'text'},
width: 100, format: webix.i18n.priceFormat, css: 'right', editor: 'text'},
{id: 'descuento', header:{text: 'Descuento', css: 'center'},
width: 80, format: webix.i18n.priceFormat, css:'right', editor: 'text'},
width: 80, format: webix.i18n.priceFormat, css: 'right', editor: 'text'},
{id: 'precio_final', hidden: true, header: 'precio_final', width: 80,
format: webix.i18n.priceFormat, css:'right'},
format: webix.i18n.priceFormat, css: 'right'},
{id: "importe", header:{text: 'Importe', css: 'center'}, width: 150,
format: webix.i18n.priceFormat, css:'right'},
format: webix.i18n.priceFormat, css: 'right'},
]

View File

@ -1,10 +1,12 @@
var menu_data = [
{id: 'app_home', icon: 'dashboard', value: 'Inicio'},
{id: 'app_partners', icon: 'users', value: 'Clientes y Proveedores'},
{id: 'app_products', icon: 'server', value: 'Productos y Servicios'},
{id: 'app_bancos', icon: 'university', value: 'Bancos'},
{id: 'app_invoices', icon: 'cart-plus', value: 'Facturas'},
];
]
var sidebar = {
@ -18,8 +20,8 @@ var sidebar = {
onAfterSelect: function(id){
$$('multi').setValue(id)
}
}
};
},
}
var multi_main = {
@ -33,9 +35,10 @@ var multi_main = {
},
app_partners,
app_products,
app_bancos,
app_invoices,
]
};
],
}
var menu_user = {
@ -49,7 +52,8 @@ var menu_user = {
type: {
subsign: true,
},
};
}
var ui_main = {
rows: [

View File

@ -7,11 +7,13 @@
<script src="/static/js/controller/util.js" type="text/javascript" ></script>
<script src="/static/js/ui/partners.js" type="text/javascript" ></script>
<script src="/static/js/ui/products.js" type="text/javascript" ></script>
<script src="/static/js/ui/bancos.js" type="text/javascript" ></script>
<script src="/static/js/ui/invoices.js" type="text/javascript" ></script>
<script src="/static/js/ui/main.js" type="text/javascript" ></script>
<script src="/static/js/controller/partners.js" type="text/javascript" ></script>
<script src="/static/js/controller/products.js" type="text/javascript" ></script>
<script src="/static/js/controller/bancos.js" type="text/javascript" ></script>
<script src="/static/js/controller/invoices.js" type="text/javascript" ></script>
<script src="/static/js/controller/main.js" type="text/javascript" ></script>