Consultar estatus del SAT en nómina

This commit is contained in:
El Mau 2021-12-12 14:46:53 -06:00
parent 8a151d42ad
commit 43e932e445
4 changed files with 106 additions and 34 deletions

View File

@ -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):

View File

@ -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()

View File

@ -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)

View File

@ -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)
}
})
}