Validar serie por usuario/sucursal
This commit is contained in:
parent
d1158bc285
commit
ba4c3d9dbd
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -115,6 +115,7 @@ IMPUESTOS = {
|
|||
'CEDULAR': '000',
|
||||
}
|
||||
DEFAULT_SAT_PRODUCTO = '01010101'
|
||||
DEFAULT_SERIE_TICKET = 'T'
|
||||
DIR_FACTURAS = 'facturas'
|
||||
USAR_TOKEN = False
|
||||
CANCEL_SIGNATURE = False
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue