Validar serie por usuario/sucursal

This commit is contained in:
Mauricio Baeza 2018-01-02 01:37:52 -06:00
parent d1158bc285
commit ba4c3d9dbd
6 changed files with 46 additions and 18 deletions

View File

@ -242,7 +242,8 @@ class AppInvoices(object):
def on_post(self, req, resp):
values = req.params
req.context['result'] = self._db.invoice(values)
session = req.env['beaker.session']
req.context['result'] = self._db.invoice(values, session['userobj'])
resp.status = falcon.HTTP_200
def on_delete(self, req, resp):
@ -288,7 +289,8 @@ class AppTickets(object):
def on_post(self, req, resp):
values = req.params
req.context['result'] = self._db.tickets(values)
session = req.env['beaker.session']
req.context['result'] = self._db.tickets(values, session['userobj'])
resp.status = falcon.HTTP_200

View File

@ -923,7 +923,6 @@ def to_pdf(data, emisor_rfc):
if data['donativo']:
donativo = '_donativo'
name = '{}_{}{}.ods'.format(rfc.lower(), version, donativo)
print (name)
path = get_template_ods(name)
if path:
return app.pdf(path, data)

View File

@ -250,11 +250,12 @@ class StorageEngine(object):
return main.Productos.actualizar(values, id)
return main.Productos.add(values)
def invoice(self, values):
def invoice(self, values, user):
id = int(values.pop('id', '0'))
if id:
return main.Facturas.actualizar(values, id)
return main.Facturas.add(values)
return main.Facturas.add(values, user)
def preinvoice(self, values):
id = int(values.pop('id', '0'))
@ -262,14 +263,14 @@ class StorageEngine(object):
#~ return main.PreFacturas.actualizar(values, id)
return main.PreFacturas.add(values)
def tickets(self, values):
def tickets(self, values, user):
opt = values.pop('opt')
if opt == 'add':
return main.Tickets.add(values)
return main.Tickets.add(values, user)
if opt == 'cancel':
return main.Tickets.cancel(values)
if opt == 'invoice':
return main.Tickets.invoice(values)
return main.Tickets.invoice(values, user)
if opt == 'print':
return main.Tickets.printer(values)

View File

@ -17,7 +17,7 @@ if __name__ == '__main__':
from controllers import util
from settings import log, VERSION, PATH_CP, COMPANIES, PRE, CURRENT_CFDI, \
INIT_VALUES, DEFAULT_PASSWORD, DECIMALES, IMPUESTOS, DEFAULT_SAT_PRODUCTO, \
CANCEL_SIGNATURE, PUBLIC
CANCEL_SIGNATURE, PUBLIC, DEFAULT_SERIE_TICKET
FORMAT = '{0:.2f}'
@ -792,6 +792,11 @@ class Folios(BaseModel):
(('serie', 'inicio'), True),
)
@classmethod
def get_default(cls):
folio = Folios.select()[0]
return folio.serie
@classmethod
def get_all(cls):
rows = (Folios
@ -2936,13 +2941,21 @@ class Facturas(BaseModel):
FacturasComplementos.create(**data)
return
def _get_serie(self, user, default_serie):
if user.sucursal is None:
return default_serie
return user.sucursal.serie_facturas or default_serie
@classmethod
def add(cls, values):
def add(cls, values, user):
productos = util.loads(values.pop('productos'))
relacionados = util.loads(values.pop('relacionados'))
ine = values.pop('ine', {})
emisor = Emisor.select()[0]
values['serie'] = cls._get_serie(cls, user, values['serie'])
values['folio'] = cls._get_folio(cls, values['serie'])
values['tipo_cambio'] = float(values['tipo_cambio'])
values['lugar_expedicion'] = emisor.cp_expedicion or emisor.codigo_postal
@ -4053,10 +4066,23 @@ class Tickets(BaseModel):
}
return data
def _get_serie(self, user, invoice=False):
default_serie = DEFAULT_SERIE_TICKET
if invoice:
default_serie = Folios.get_default()
if user.sucursal is None:
return default_serie
if invoice:
return user.sucursal.serie_facturas or default_serie
else:
return user.sucursal.serie_tickets or default_serie
@classmethod
def add(cls, values):
def add(cls, values, user):
productos = util.loads(values.pop('productos'))
values['serie'] = 'T'
values['serie'] = cls._get_serie(cls, user)
values['folio'] = cls._get_folio(cls, values['serie'])
with database_proxy.atomic() as txn:
@ -4099,8 +4125,7 @@ class Tickets(BaseModel):
.where(Tickets.id.in_(tickets))
)
result = query.execute()
print (result)
return
return result
def _calculate_totals_invoice(self, invoice, tickets):
subtotal = 0
@ -4186,7 +4211,7 @@ class Tickets(BaseModel):
return data
@classmethod
def invoice(cls, values):
def invoice(cls, values, user):
is_invoice_day = util.get_bool(values['is_invoice_day'])
id_client = int(values['client'])
tickets = util.loads(values['tickets'])
@ -4207,7 +4232,7 @@ class Tickets(BaseModel):
emisor = Emisor.select()[0]
data = {}
data['cliente'] = client
data['serie'] = 'T'
data['serie'] = cls._get_serie(cls, user, True)
data['folio'] = cls._get_folio_invoice(cls, data['serie'])
data['forma_pago'] = client.forma_pago.key
data['tipo_cambio'] = 1.00

View File

@ -115,6 +115,7 @@ IMPUESTOS = {
'CEDULAR': '000',
}
DEFAULT_SAT_PRODUCTO = '01010101'
DEFAULT_SERIE_TICKET = 'T'
DIR_FACTURAS = 'facturas'
USAR_TOKEN = False
CANCEL_SIGNATURE = False

View File

@ -275,7 +275,7 @@ var grid_tickets_active_cols = [
{id: 'index', header: '#', adjust: 'data', css: 'right'},
{id: "id", header:"ID", hidden:true},
{id: "serie", header: ["Serie", {content: "selectFilter"}], adjust: "data",
sort: "string", hidden: true},
sort: "string"},
{id: 'folio', header: ['Folio', {content: 'numberFilter'}], adjust: 'header',
sort: 'int', css: 'right', footer: {content: 'countRows', css: 'right'}},
{id: "fecha", header: ["Fecha y Hora"], adjust: "data", sort: "string",
@ -310,7 +310,7 @@ var grid_tickets_invoice_cols = [
{id: 'index', header: '#', adjust: 'data', css: 'right'},
{id: "id", header:"ID", hidden:true},
{id: "serie", header: ["Serie", {content: "selectFilter"}], adjust: "data",
sort: "string", hidden: true},
sort: "string"},
{id: 'folio', header: ['Folio', {content: 'numberFilter'}], adjust: 'header',
sort: 'int', css: 'right', footer: {content: 'countRows', css: 'right'}},
{id: "fecha", header: ["Fecha y Hora"], adjust: "data", sort: "string",