Get report client
This commit is contained in:
parent
bf3b69063c
commit
854c7fb4a2
|
@ -357,6 +357,46 @@ class PACFinkok(object):
|
||||||
|
|
||||||
return result.token
|
return result.token
|
||||||
|
|
||||||
|
def client_add_timbres(self, rfc, credit):
|
||||||
|
"""Agregar credito a un emisor
|
||||||
|
|
||||||
|
Se requiere cuenta de reseller
|
||||||
|
|
||||||
|
Args:
|
||||||
|
rfc (str): El RFC del emisor, debe existir
|
||||||
|
credit (int): Cantidad de folios a agregar
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict
|
||||||
|
'success': True or False,
|
||||||
|
'credit': nuevo credito despues de agregar or None
|
||||||
|
'message':
|
||||||
|
'Success, added {credit} of credit to {RFC}.'
|
||||||
|
'RFC no encontrado'
|
||||||
|
"""
|
||||||
|
auth = AUTH['RESELLER']
|
||||||
|
|
||||||
|
method = 'client'
|
||||||
|
client = Client(
|
||||||
|
self.URL[method], transport=self._transport, plugins=self._plugins)
|
||||||
|
args = {
|
||||||
|
'username': auth['user'],
|
||||||
|
'password': auth['pass'],
|
||||||
|
'taxpayer_id': rfc,
|
||||||
|
'credit': credit,
|
||||||
|
}
|
||||||
|
|
||||||
|
result = self._get_result(client, 'assign', args)
|
||||||
|
if self.error:
|
||||||
|
log.error(error)
|
||||||
|
return ''
|
||||||
|
|
||||||
|
if not result.success:
|
||||||
|
self.error = result.message
|
||||||
|
return 0
|
||||||
|
|
||||||
|
return result.credit
|
||||||
|
|
||||||
def client_balance(self, auth={}, rfc=''):
|
def client_balance(self, auth={}, rfc=''):
|
||||||
"""Regresa los timbres restantes del cliente
|
"""Regresa los timbres restantes del cliente
|
||||||
Se pueden usar las credenciales de relleser o las credenciales del emisor
|
Se pueden usar las credenciales de relleser o las credenciales del emisor
|
||||||
|
@ -375,8 +415,8 @@ class PACFinkok(object):
|
||||||
auth = AUTH['RESELLER']
|
auth = AUTH['RESELLER']
|
||||||
|
|
||||||
method = 'client'
|
method = 'client'
|
||||||
client = Client(
|
client = Client(self.URL[method],
|
||||||
self.URL[method], transport=self._transport, plugins=self._plugins)
|
transport=self._transport, plugins=self._plugins)
|
||||||
args = {
|
args = {
|
||||||
'reseller_username': auth['user'],
|
'reseller_username': auth['user'],
|
||||||
'reseller_password': auth['pass'],
|
'reseller_password': auth['pass'],
|
||||||
|
@ -395,3 +435,115 @@ class PACFinkok(object):
|
||||||
|
|
||||||
return result.users.ResellerUser[0].credit
|
return result.users.ResellerUser[0].credit
|
||||||
|
|
||||||
|
def client_set_status(self, rfc, status):
|
||||||
|
"""Edita el estatus (Activo o Suspendido) de un cliente
|
||||||
|
Se requiere cuenta de reseller para usar este método
|
||||||
|
|
||||||
|
Args:
|
||||||
|
rfc (str): El RFC del cliente
|
||||||
|
|
||||||
|
Kwargs:
|
||||||
|
status (bool):
|
||||||
|
True == 'A' == Activo
|
||||||
|
False == 'S' == Suspendido
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict
|
||||||
|
'message':
|
||||||
|
'Account Created successfully'
|
||||||
|
'Account Already exists'
|
||||||
|
'success': True or False
|
||||||
|
"""
|
||||||
|
auth = AUTH['RESELLER']
|
||||||
|
ts = {True: 'A', False: 'S'}
|
||||||
|
method = 'client'
|
||||||
|
client = Client(self.URL[method],
|
||||||
|
transport=self._transport, plugins=self._plugins)
|
||||||
|
|
||||||
|
args = {
|
||||||
|
'reseller_username': auth['user'],
|
||||||
|
'reseller_password': auth['pass'],
|
||||||
|
'taxpayer_id': rfc,
|
||||||
|
'status': ts[status],
|
||||||
|
}
|
||||||
|
result = self._get_result(client, 'edit', args)
|
||||||
|
|
||||||
|
if self.error:
|
||||||
|
return False
|
||||||
|
|
||||||
|
if not result.success:
|
||||||
|
self.error = result.message
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def client_switch(self, rfc, type_user):
|
||||||
|
"""Edita el tipo de timbrado (OnDemand o Prepago) de un cliente
|
||||||
|
Se requiere cuenta de reseller para usar este método
|
||||||
|
|
||||||
|
Args:
|
||||||
|
rfc (str): El RFC del cliente
|
||||||
|
|
||||||
|
Kwargs:
|
||||||
|
status (bool):
|
||||||
|
True == 'O' == OnDemand
|
||||||
|
False == 'P' == Prepago
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict
|
||||||
|
'message':
|
||||||
|
'Account Created successfully'
|
||||||
|
'Account Already exists'
|
||||||
|
'success': True or False
|
||||||
|
"""
|
||||||
|
auth = AUTH['RESELLER']
|
||||||
|
tu = {True: 'O', False: 'P'}
|
||||||
|
method = 'client'
|
||||||
|
client = Client(self.URL[method],
|
||||||
|
transport=self._transport, plugins=self._plugins)
|
||||||
|
|
||||||
|
args = {
|
||||||
|
'username': auth['user'],
|
||||||
|
'password': auth['pass'],
|
||||||
|
'taxpayer_id': rfc,
|
||||||
|
'type_user': tu[type_user],
|
||||||
|
}
|
||||||
|
result = self._get_result(client, 'switch', args)
|
||||||
|
|
||||||
|
if self.error:
|
||||||
|
return False
|
||||||
|
|
||||||
|
if not result.success:
|
||||||
|
self.error = result.message
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def client_report_folios(self, rfc, date_from, date_to, invoice_type='I'):
|
||||||
|
"""Obtiene un reporte del total de facturas timbradas
|
||||||
|
"""
|
||||||
|
auth = AUTH['RESELLER']
|
||||||
|
|
||||||
|
args = {
|
||||||
|
'username': auth['user'],
|
||||||
|
'password': auth['pass'],
|
||||||
|
'taxpayer_id': rfc,
|
||||||
|
'date_from': date_from,
|
||||||
|
'date_to': date_to,
|
||||||
|
'invoice_type': invoice_type,
|
||||||
|
}
|
||||||
|
|
||||||
|
method = 'util'
|
||||||
|
client = Client(self.URL[method],
|
||||||
|
transport=self._transport, plugins=self._plugins)
|
||||||
|
|
||||||
|
result = self._get_result(client, 'report_total', args)
|
||||||
|
|
||||||
|
if result.result is None:
|
||||||
|
# ~ PAC - Debería regresar RFC inexistente o sin registros
|
||||||
|
self.error = 'RFC no existe o no tiene registros'
|
||||||
|
return 0
|
||||||
|
|
||||||
|
total = result.result.ReportTotal[0].total
|
||||||
|
|
||||||
|
return total
|
||||||
|
|
|
@ -93,88 +93,6 @@ class PACFinkok(object):
|
||||||
|
|
||||||
return result.token
|
return result.token
|
||||||
|
|
||||||
def client_add_timbres(self, rfc, credit):
|
|
||||||
"""Agregar credito a un emisor
|
|
||||||
|
|
||||||
Se requiere cuenta de reseller
|
|
||||||
|
|
||||||
Args:
|
|
||||||
rfc (str): El RFC del emisor, debe existir
|
|
||||||
credit (int): Cantidad de folios a agregar
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
dict
|
|
||||||
'success': True or False,
|
|
||||||
'credit': nuevo credito despues de agregar or None
|
|
||||||
'message':
|
|
||||||
'Success, added {credit} of credit to {RFC}.'
|
|
||||||
'RFC no encontrado'
|
|
||||||
"""
|
|
||||||
auth = FINKOK['RESELLER']
|
|
||||||
|
|
||||||
if not isinstance(credit, int):
|
|
||||||
self.error = 'El credito debe ser un entero'
|
|
||||||
return 0
|
|
||||||
|
|
||||||
method = 'client'
|
|
||||||
client = Client(
|
|
||||||
self.URL[method], transport=self._transport, plugins=self._plugins)
|
|
||||||
args = {
|
|
||||||
'username': auth['USER'],
|
|
||||||
'password': auth['PASS'],
|
|
||||||
'taxpayer_id': rfc,
|
|
||||||
'credit': credit,
|
|
||||||
}
|
|
||||||
|
|
||||||
result = self._get_result(client, 'assign', args)
|
|
||||||
if self.error:
|
|
||||||
return ''
|
|
||||||
|
|
||||||
if not result.success:
|
|
||||||
self.error = result.message
|
|
||||||
return 0
|
|
||||||
|
|
||||||
return result.credit
|
|
||||||
|
|
||||||
def client_edit(self, rfc, status=True):
|
|
||||||
"""Edita el estatus (Activo o Suspendido) de un cliente
|
|
||||||
Se requiere cuenta de reseller para usar este método
|
|
||||||
|
|
||||||
Args:
|
|
||||||
rfc (str): El RFC del cliente
|
|
||||||
|
|
||||||
Kwargs:
|
|
||||||
status (bool): True == 'A' == Activo or False == 'S' == Suspendido
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
dict
|
|
||||||
'message':
|
|
||||||
'Account Created successfully'
|
|
||||||
'Account Already exists'
|
|
||||||
'success': True or False
|
|
||||||
"""
|
|
||||||
auth = FINKOK['RESELLER']
|
|
||||||
ts = {True: 'A', False: 'S'}
|
|
||||||
method = 'client'
|
|
||||||
client = Client(
|
|
||||||
self.URL[method], transport=self._transport, plugins=self._plugins)
|
|
||||||
|
|
||||||
args = {
|
|
||||||
'reseller_username': auth['USER'],
|
|
||||||
'reseller_password': auth['PASS'],
|
|
||||||
'taxpayer_id': rfc,
|
|
||||||
'status': ts[status],
|
|
||||||
}
|
|
||||||
result = self._get_result(client, 'edit', args)
|
|
||||||
if self.error:
|
|
||||||
return False
|
|
||||||
|
|
||||||
if not result.success:
|
|
||||||
self.error = result.message
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def client_get(self, rfc):
|
def client_get(self, rfc):
|
||||||
"""Regresa el estatus del cliente
|
"""Regresa el estatus del cliente
|
||||||
Se requiere cuenta de reseller para usar este método
|
Se requiere cuenta de reseller para usar este método
|
||||||
|
@ -295,42 +213,6 @@ class PACFinkok(object):
|
||||||
|
|
||||||
return self.result.result.ReportTotalCredit
|
return self.result.result.ReportTotalCredit
|
||||||
|
|
||||||
def get_report_total(self, rfc, date_from, date_to, invoice_type='I'):
|
|
||||||
"""Obtiene un reporte del total de facturas timbradas
|
|
||||||
"""
|
|
||||||
auth = FINKOK['RESELLER']
|
|
||||||
|
|
||||||
args = {
|
|
||||||
'username': auth['USER'],
|
|
||||||
'password': auth['PASS'],
|
|
||||||
'taxpayer_id': rfc,
|
|
||||||
'date_from': date_from,
|
|
||||||
'date_to': date_to,
|
|
||||||
'invoice_type': invoice_type,
|
|
||||||
}
|
|
||||||
|
|
||||||
method = 'util'
|
|
||||||
client = Client(
|
|
||||||
self.URL[method], transport=self._transport, plugins=self._plugins)
|
|
||||||
try:
|
|
||||||
self.result = client.service.report_total(**args)
|
|
||||||
except Fault as e:
|
|
||||||
self.error = str(e)
|
|
||||||
return 0
|
|
||||||
except TransportError as e:
|
|
||||||
self.error = str(e)
|
|
||||||
return 0
|
|
||||||
except ConnectionError:
|
|
||||||
self.error = 'Verifica la conexión a internet'
|
|
||||||
return 0
|
|
||||||
|
|
||||||
if self.result.result is None:
|
|
||||||
# ~ PAC - Debería regresar RFC inexistente o sin registros
|
|
||||||
self.error = 'RFC no existe o no tiene registros'
|
|
||||||
return 0
|
|
||||||
|
|
||||||
return self.result.result.ReportTotal[0].total or 0
|
|
||||||
|
|
||||||
def get_report_uuid(self, rfc, date_from, date_to, invoice_type='I'):
|
def get_report_uuid(self, rfc, date_from, date_to, invoice_type='I'):
|
||||||
"""Obtiene un reporte de los CFDI timbrados
|
"""Obtiene un reporte de los CFDI timbrados
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -292,6 +292,14 @@ class TestClient(unittest.TestCase):
|
||||||
self.assertTrue(result)
|
self.assertTrue(result)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def test_client_report_folios(self):
|
||||||
|
expected = 0
|
||||||
|
date_from = '2021-01-01T00:00:00'
|
||||||
|
date_to = '2021-02-01T00:00:00'
|
||||||
|
result = self.pac.client_report_folios(self.RFC, date_from, date_to)
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue