forked from elmau/empresa-libre
Consultar estatus del SAT en nómina
This commit is contained in:
parent
8a151d42ad
commit
43e932e445
|
@ -498,6 +498,10 @@ class AppNomina(object):
|
||||||
|
|
||||||
def on_get(self, req, resp):
|
def on_get(self, req, resp):
|
||||||
values = req.params
|
values = req.params
|
||||||
|
user = req.env['beaker.session']['userobj']
|
||||||
|
if 'opt' in values:
|
||||||
|
req.context['result'] = self._db.nomina_get(values, user)
|
||||||
|
else:
|
||||||
by = values.get('by', '')
|
by = values.get('by', '')
|
||||||
req.context['result'] = self._db.get_nomina(values)
|
req.context['result'] = self._db.get_nomina(values)
|
||||||
if 'download' in by:
|
if 'download' in by:
|
||||||
|
|
|
@ -511,6 +511,9 @@ class StorageEngine(object):
|
||||||
def products_get(self, filters, user):
|
def products_get(self, filters, user):
|
||||||
return main.Productos.get_data(filters, user)
|
return main.Productos.get_data(filters, user)
|
||||||
|
|
||||||
|
def nomina_get(self, filters, user):
|
||||||
|
return main.CfdiNomina.get_data(filters, user)
|
||||||
|
|
||||||
# Companies only in MV
|
# Companies only in MV
|
||||||
def _get_empresas(self, values):
|
def _get_empresas(self, values):
|
||||||
return main.companies_get()
|
return main.companies_get()
|
||||||
|
|
|
@ -8630,6 +8630,58 @@ class CfdiNomina(BaseModel):
|
||||||
class Meta:
|
class Meta:
|
||||||
order_by = ('fecha',)
|
order_by = ('fecha',)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _get_status_sat(cls, filters, user):
|
||||||
|
id = filters['id']
|
||||||
|
|
||||||
|
obj = CfdiNomina.get(CfdiNomina.id == id)
|
||||||
|
estatus_sat = utils.get_status_sat(obj.xml)
|
||||||
|
if obj.estatus_sat != estatus_sat:
|
||||||
|
obj.estatus_sat = estatus_sat
|
||||||
|
obj.save()
|
||||||
|
|
||||||
|
if obj.estatus_sat == 'Vigente' and obj.estatus == 'Cancelada':
|
||||||
|
days = utils.get_days(obj.fecha_cancelacion)
|
||||||
|
if days > 3:
|
||||||
|
estatus_sat = 'uncancel'
|
||||||
|
|
||||||
|
return estatus_sat
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _get_yearmonth(cls, filters, user):
|
||||||
|
if filters['year'] == '-1':
|
||||||
|
fy = (CfdiNomina.fecha.year > 0)
|
||||||
|
else:
|
||||||
|
fy = (CfdiNomina.fecha.year == int(filters['year']))
|
||||||
|
if filters['month'] == '-1':
|
||||||
|
fm = (CfdiNomina.fecha.month > 0)
|
||||||
|
else:
|
||||||
|
fm = (CfdiNomina.fecha.month == int(filters['month']))
|
||||||
|
filters = (fy & fm)
|
||||||
|
return cls._get(cls, filters)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _get_dates(cls, filters, user):
|
||||||
|
dates = util.loads(filters['range'])
|
||||||
|
filters = CfdiNomina.fecha.between(
|
||||||
|
util.get_date(dates['start']),
|
||||||
|
util.get_date(dates['end'], True)
|
||||||
|
)
|
||||||
|
return cls._get(cls, filters)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _get_import(cls, filters, user):
|
||||||
|
return cls._import(cls)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _get_stamp(cls, filters, user):
|
||||||
|
return cls._stamp(cls)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_data(cls, values, user):
|
||||||
|
opt = values.pop('opt')
|
||||||
|
return getattr(cls, f'_get_{opt}')(values, user)
|
||||||
|
|
||||||
def _cancel(self, values, user):
|
def _cancel(self, values, user):
|
||||||
id = int(values['id'])
|
id = int(values['id'])
|
||||||
obj = CfdiNomina.get(CfdiNomina.id==id)
|
obj = CfdiNomina.get(CfdiNomina.id==id)
|
||||||
|
@ -9526,32 +9578,6 @@ class CfdiNomina(BaseModel):
|
||||||
if values.get('by', ''):
|
if values.get('by', ''):
|
||||||
return getattr(cls, f"_get_by_{values['by']}")(cls, values)
|
return getattr(cls, f"_get_by_{values['by']}")(cls, values)
|
||||||
|
|
||||||
if values['opt'] == 'dates':
|
|
||||||
dates = util.loads(values['range'])
|
|
||||||
filters = CfdiNomina.fecha.between(
|
|
||||||
util.get_date(dates['start']),
|
|
||||||
util.get_date(dates['end'], True)
|
|
||||||
)
|
|
||||||
return cls._get(cls, filters)
|
|
||||||
|
|
||||||
if values['opt'] == 'yearmonth':
|
|
||||||
if values['year'] == '-1':
|
|
||||||
fy = (CfdiNomina.fecha.year > 0)
|
|
||||||
else:
|
|
||||||
fy = (CfdiNomina.fecha.year == int(values['year']))
|
|
||||||
if values['month'] == '-1':
|
|
||||||
fm = (CfdiNomina.fecha.month > 0)
|
|
||||||
else:
|
|
||||||
fm = (CfdiNomina.fecha.month == int(values['month']))
|
|
||||||
filters = (fy & fm)
|
|
||||||
return cls._get(cls, filters)
|
|
||||||
|
|
||||||
if values['opt'] == 'import':
|
|
||||||
return cls._import(cls)
|
|
||||||
|
|
||||||
if values['opt'] == 'stamp':
|
|
||||||
return cls._stamp(cls)
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def remove(cls, ids):
|
def remove(cls, ids):
|
||||||
ids = util.loads(ids)
|
ids = util.loads(ids)
|
||||||
|
|
|
@ -12,6 +12,7 @@ var nomina_controllers = {
|
||||||
$$('cmd_nomina_without_stamp').attachEvent('onItemClick', cmd_nomina_without_stamp_click)
|
$$('cmd_nomina_without_stamp').attachEvent('onItemClick', cmd_nomina_without_stamp_click)
|
||||||
$$('cmd_nomina_delete').attachEvent('onItemClick', cmd_nomina_delete_click)
|
$$('cmd_nomina_delete').attachEvent('onItemClick', cmd_nomina_delete_click)
|
||||||
$$('cmd_nomina_timbrar').attachEvent('onItemClick', cmd_nomina_timbrar_click)
|
$$('cmd_nomina_timbrar').attachEvent('onItemClick', cmd_nomina_timbrar_click)
|
||||||
|
$$('cmd_nomina_sat').attachEvent('onItemClick', cmd_nomina_sat_click)
|
||||||
$$('cmd_nomina_log').attachEvent('onItemClick', cmd_nomina_log_click)
|
$$('cmd_nomina_log').attachEvent('onItemClick', cmd_nomina_log_click)
|
||||||
$$('cmd_nomina_download').attachEvent('onItemClick', cmd_nomina_download_click)
|
$$('cmd_nomina_download').attachEvent('onItemClick', cmd_nomina_download_click)
|
||||||
$$('cmd_nomina_cancel').attachEvent('onItemClick', cmd_nomina_cancel_click)
|
$$('cmd_nomina_cancel').attachEvent('onItemClick', cmd_nomina_cancel_click)
|
||||||
|
@ -570,3 +571,41 @@ function grid_nomina_on_select_change(){
|
||||||
g.getColumnConfig('empleado').footer[0].text = webix.i18n.priceFormat(total)
|
g.getColumnConfig('empleado').footer[0].text = webix.i18n.priceFormat(total)
|
||||||
g.refreshColumns()
|
g.refreshColumns()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function cmd_nomina_sat_click(){
|
||||||
|
var g = $$('grid_nomina')
|
||||||
|
|
||||||
|
if(g.count() == 0){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var row = g.getSelectedItem()
|
||||||
|
if (row == undefined){
|
||||||
|
msg_error('Selecciona un recibo de nómina')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (row instanceof Array){
|
||||||
|
msg_error('Selecciona solo un recibo de nómina')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!row.uuid){
|
||||||
|
msg_error('La factura no esta timbrada, solo es posible consultar \
|
||||||
|
el estatus en el SAT de facturas timbradas')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var options = {opt: 'status_sat', id: row.id}
|
||||||
|
webix.ajax().get('/nomina', options, function(text, data){
|
||||||
|
var value = data.json()
|
||||||
|
if(value == 'Vigente'){
|
||||||
|
msg_ok(value)
|
||||||
|
}else if(value == 'uncancel'){
|
||||||
|
ask_invoice_uncancel(row.id)
|
||||||
|
}else{
|
||||||
|
msg_error(value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue