Validate add products
This commit is contained in:
parent
585632882d
commit
b9d87f0343
|
@ -792,6 +792,12 @@ def _products_from_xml(rfc, data):
|
|||
return result
|
||||
|
||||
result['data'] = cfdi.data
|
||||
# ~ result['data']['xml'] = cfdi.source
|
||||
del result['data']['cfdi']['Certificado']
|
||||
del result['data']['cfdi']['NoCertificado']
|
||||
del result['data']['cfdi']['Sello']
|
||||
del result['data']['timbre']['SelloCFD']
|
||||
del result['data']['timbre']['SelloSAT']
|
||||
|
||||
emisor = result['data']['emisor']
|
||||
emisor['rfc'] = emisor['Rfc']
|
||||
|
|
|
@ -9370,6 +9370,63 @@ class PartnerProducts(BaseModel):
|
|||
return getattr(cls, method)(cls, filters)
|
||||
|
||||
|
||||
class PartnerInvoices(BaseModel):
|
||||
partner = ForeignKeyField(Socios)
|
||||
serie = TextField(default='')
|
||||
folio = TextField(default='')
|
||||
cfdi_date = DateTimeField()
|
||||
cfdi_stamp = DateTimeField()
|
||||
pay_way = TextField(default='')
|
||||
pay_conditions = TextField(default='')
|
||||
pay_method = TextField(default='')
|
||||
subtotal = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
||||
auto_round=True)
|
||||
discount = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
||||
auto_round=True)
|
||||
currency = TextField(default='MXN')
|
||||
type_change = DecimalField(default=1.0, max_digits=15, decimal_places=6,
|
||||
auto_round=True)
|
||||
total = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
||||
auto_round=True)
|
||||
total_mn = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
||||
auto_round=True)
|
||||
type_cfdi = TextField(default='')
|
||||
cfdi_use = TextField(default='')
|
||||
total_retenciones = DecimalField(
|
||||
max_digits=20, decimal_places=6, auto_round=True, null=True)
|
||||
total_trasladados = DecimalField(
|
||||
max_digits=20, decimal_places=6, auto_round=True, null=True)
|
||||
xml = TextField(default='')
|
||||
uuid = UUIDField()
|
||||
status = TextField(default='Guardada')
|
||||
status_sat = TextField(default='Vigente')
|
||||
notes = TextField(default='')
|
||||
balance = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
||||
auto_round=True)
|
||||
pagada = BooleanField(default=False)
|
||||
cancelada = BooleanField(default=False)
|
||||
date_cancel = DateTimeField(null=True)
|
||||
error = TextField(default='')
|
||||
|
||||
class Meta:
|
||||
order_by = ('-cfdi_date',)
|
||||
|
||||
|
||||
class InventoryEntries(BaseModel):
|
||||
storage = ForeignKeyField(Almacenes, null=True)
|
||||
invoice = ForeignKeyField(PartnerInvoices, null=True)
|
||||
product = ForeignKeyField(Productos)
|
||||
date_add = DateTimeField(default=utils.now)
|
||||
cant = DecimalField(default=0.0, max_digits=18, decimal_places=2,
|
||||
auto_round=True)
|
||||
|
||||
class Meta:
|
||||
order_by = ('-date_add',)
|
||||
indexes = (
|
||||
(('storage', 'product', 'date_add', 'cant'), True),
|
||||
)
|
||||
|
||||
|
||||
@util.run_in_thread
|
||||
def _save_log(user, action, table):
|
||||
data = {'usuario': user, 'accion': action, 'tabla': table}
|
||||
|
@ -9586,6 +9643,8 @@ def _crear_tablas(rfc):
|
|||
Productos.impuestos.get_through_model(),
|
||||
Productos.tags.get_through_model(),
|
||||
PartnerProducts,
|
||||
InventoryEntries,
|
||||
PartnerInvoices,
|
||||
]
|
||||
log.info('Creando tablas...')
|
||||
database_proxy.create_tables(tablas, True)
|
||||
|
@ -9638,7 +9697,10 @@ def _migrate_tables(rfc=''):
|
|||
CfdiNominaOtroPago, CfdiNominaOtros, CfdiNominaPercepciones,
|
||||
CfdiNominaRelacionados, CfdiNominaSeparacion, CfdiNominaSubcontratos,
|
||||
CfdiNominaTotales, SATNivelesEducativos, Roles, Permisos,
|
||||
SociosCuentasBanco, SATLeyendasFiscales, PartnerProducts
|
||||
SociosCuentasBanco, SATLeyendasFiscales,
|
||||
PartnerProducts,
|
||||
InventoryEntries,
|
||||
PartnerInvoices,
|
||||
]
|
||||
log.info('Creando tablas nuevas...')
|
||||
database_proxy.create_tables(tablas, True)
|
||||
|
|
|
@ -449,11 +449,36 @@ function cmd_close_products_add_click(id, e, node){
|
|||
grid.clearAll()
|
||||
}
|
||||
|
||||
|
||||
function _add_entries_inventory(data){
|
||||
var grid = $$('grid_partner_products')
|
||||
|
||||
webix.ajax().sync().post('inventoryentries', data, {
|
||||
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) {
|
||||
$$('multi_invoices').setValue('products_home')
|
||||
$$('lbl_partner').setValue('')
|
||||
grid.clearAll()
|
||||
}else{
|
||||
msg_error(values.msg)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
//~ Save add products
|
||||
function cmd_save_products_add_click(id, e, node){
|
||||
var grid = $$('grid_partner_products')
|
||||
var count = 0
|
||||
var products = []
|
||||
var validate_import = false
|
||||
var validate_cant = false
|
||||
|
||||
grid.eachRow(function(row){
|
||||
var r = grid.getItem(row)
|
||||
|
@ -466,6 +491,14 @@ function cmd_save_products_add_click(id, e, node){
|
|||
p.unit_value = r.unit_value1
|
||||
p.cant = r.cant1
|
||||
products.push(p)
|
||||
|
||||
if(p.unit_value < parseFloat(r.unit_value)){
|
||||
validate_import = true
|
||||
}
|
||||
if(p.cant > r.cant){
|
||||
validate_cant = true
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -475,9 +508,37 @@ function cmd_save_products_add_click(id, e, node){
|
|||
return
|
||||
}
|
||||
|
||||
$$('multi_invoices').setValue('products_home')
|
||||
$$('lbl_partner').setValue('')
|
||||
grid.clearAll()
|
||||
if(validate_import){
|
||||
msg = 'El Valor Unitario no puede ser menor al Valor Unitario del proveedor'
|
||||
msg_error(msg)
|
||||
return
|
||||
}
|
||||
|
||||
if(validate_cant){
|
||||
msg = 'La Cantidad no puede ser mayor a la Cantidad del proveedor'
|
||||
msg_error(msg)
|
||||
return
|
||||
}
|
||||
|
||||
var data = {
|
||||
partner: cfg_products['partner'],
|
||||
products: products,
|
||||
}
|
||||
|
||||
msg = '¿Estás seguro de ingresar estos productos? <br/><br/>\
|
||||
Esta acción no se puede deshacer.'
|
||||
webix.confirm({
|
||||
title: 'Agregar entrada',
|
||||
ok: 'Si',
|
||||
cancel: 'No',
|
||||
type: 'confirm-error',
|
||||
text: msg,
|
||||
callback:function(result){
|
||||
if(result){
|
||||
_add_entries_inventory(data)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//~ Import from xml
|
||||
|
@ -545,8 +606,8 @@ function up_products_from_xml_upload_complete(response){
|
|||
|
||||
var grid = $$('grid_partner_products')
|
||||
var data = response.data
|
||||
cfg_products['partner_id'] = data.emisor.id
|
||||
cfg_products['partner_rfc'] = data.emisor.rfc
|
||||
cfg_products['partner'] = data.emisor
|
||||
//~ cfg_products['xml'] = data.xml
|
||||
|
||||
var html = '<span class="webix_icon fa-user"></span><span class="lbl_partner">'
|
||||
html += data.emisor.nombre + ' (' + data.emisor.rfc + ')</span>'
|
||||
|
@ -562,14 +623,14 @@ function up_products_from_xml_upload_complete(response){
|
|||
function get_partner_product(grid, row){
|
||||
grid.refresh(row.id)
|
||||
|
||||
var partner_id = cfg_products['partner'].id
|
||||
var filters = {
|
||||
opt: 'product',
|
||||
partner_id: cfg_products['partner_id'],
|
||||
partner_rfc: cfg_products['partner_rfc'],
|
||||
partner: cfg_products['partner'],
|
||||
partner_key: row.key,
|
||||
}
|
||||
|
||||
if(!filters['partner_id']){
|
||||
if(!partner_id){
|
||||
msg = 'El Proveedor no esta dado de alta'
|
||||
msg_ok(msg)
|
||||
return
|
||||
|
@ -603,6 +664,7 @@ function grid_partner_products_select(row_id, state){
|
|||
row['key_sat1'] = row.key_sat
|
||||
row['description1'] = row.description
|
||||
row['cant1'] = row.cant
|
||||
row['unit_value1'] = 0.0
|
||||
get_partner_product(grid, row)
|
||||
}else{
|
||||
row['key_sat1'] = ''
|
||||
|
|
Loading…
Reference in New Issue