Consultar estatus del SAT en nómina
This commit is contained in:
parent
8a151d42ad
commit
43e932e445
|
@ -498,14 +498,18 @@ class AppNomina(object):
|
|||
|
||||
def on_get(self, req, resp):
|
||||
values = req.params
|
||||
by = values.get('by', '')
|
||||
req.context['result'] = self._db.get_nomina(values)
|
||||
if 'download' in by:
|
||||
name = req.context['result']['name']
|
||||
req.context['blob'] = req.context['result']['data']
|
||||
resp.content_type = 'application/octet-stream'
|
||||
resp.append_header(
|
||||
'Content-Disposition', f'attachment; filename={name}')
|
||||
user = req.env['beaker.session']['userobj']
|
||||
if 'opt' in values:
|
||||
req.context['result'] = self._db.nomina_get(values, user)
|
||||
else:
|
||||
by = values.get('by', '')
|
||||
req.context['result'] = self._db.get_nomina(values)
|
||||
if 'download' in by:
|
||||
name = req.context['result']['name']
|
||||
req.context['blob'] = req.context['result']['data']
|
||||
resp.content_type = 'application/octet-stream'
|
||||
resp.append_header(
|
||||
'Content-Disposition', f'attachment; filename={name}')
|
||||
resp.status = falcon.HTTP_200
|
||||
|
||||
def on_post(self, req, resp):
|
||||
|
|
|
@ -511,6 +511,9 @@ class StorageEngine(object):
|
|||
def products_get(self, 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
|
||||
def _get_empresas(self, values):
|
||||
return main.companies_get()
|
||||
|
|
|
@ -8630,6 +8630,58 @@ class CfdiNomina(BaseModel):
|
|||
class Meta:
|
||||
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):
|
||||
id = int(values['id'])
|
||||
obj = CfdiNomina.get(CfdiNomina.id==id)
|
||||
|
@ -9526,32 +9578,6 @@ class CfdiNomina(BaseModel):
|
|||
if values.get('by', ''):
|
||||
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
|
||||
def remove(cls, 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_delete').attachEvent('onItemClick', cmd_nomina_delete_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_download').attachEvent('onItemClick', cmd_nomina_download_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.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