Commits

Alfonso de la Guarda Reyes  committed 7682cf2

Multiples Prices, Receipes & Product Modifications

  • Participants
  • Parent commits 62257cb

Comments (0)

Files changed (113)

 moneda_aux = Auxiliar Money
 costumer_manage = Costumer management in each operation
 stock_alerta = Revisa saldo en almacen
+doc_pedido = Document id por request and pre-order
+cash_var = Commercial condition for sale (credit or cash)
 
 
 Compositions
     if cierre=='0000-00-00 00:00:00':
         cierre=apertura
     condicion="doc.fecha_vta between date('"+apertura+"') and date('"+cierre+"')"
-    sql = """select doc.codigo,if(length(mae.alias)>0,
+    sql = """select doc.codbarras,if(length(mae.alias)>0,
         left(mae.alias,29),left(concat(mae.nombre,' ',
         mae.descripcion),29)) as producto,doc.cantidad as cnt,
-        doc.precio as precio,sub_codbarras from docventa doc
-        left join maestro mae on mae.id=doc.codigo
+        doc.precio as precio,doc.sub_codbarras from docventa doc
+        left join maestro mae on mae.id=doc.codbarras
         where %s and doc.estado='1' and doc.pv='%s' and
         doc.caja='%s' and doc.ext_doc=0""" % (condicion, pos_num,
         caja_num)
 
 ##WareHouse Report
 def almacen(apertura,cierre='4',modo=0):
+    """
+    Salidas de almacen por ventas
+    """
     lineas=[]
     relalm={}
     if modo==5:
         parte=float(cierre)
     else:
         condtiempo=" between date('"+apertura+"') and date('"+cierre+"')"
-    sql="(select doc.codigo,doc.precio,sum(doc.cantidad),if(length(mae.alias)>0,mae.alias,concat(mae.nombre,' ',mae.descripcion)) as padre,if(rec.codbarras_hijo!='NULL',rec.codbarras_hijo,'ERROR') as codigo_hijo,if(rec.codbarras_hijo!='NULL',if(length(ma2.alias)>0,ma2.alias,concat(ma2.nombre,' ',ma2.descripcion)),'DSCP ERROR') as dscp_hijo,if(rec.codbarras_hijo!='NULL',rec.cantidad,0) as cnt,if(rec.codbarras_hijo!='NULL',sum(doc.cantidad)*rec.cantidad,0) as cons from docventa doc left join maestro mae on mae.codbarras=doc.codigo left join recetas rec on rec.codbarras_padre=doc.codigo and rec.modo=0 and (rec.tipo=doc.dist_type or rec.tipo=2) left join maestro ma2 on ma2.codbarras=rec.codbarras_hijo where doc.estado='B' and doc.fecha_vta "+condtiempo+" and doc.pv="+str(pos_num)+" group by doc.codigo,rec.codbarras_hijo order by doc.codigo,rec.codbarras_hijo)"
+    sql="(select doc.codbarras,doc.precio,sum(doc.cantidad),if(length(mae.alias)>0,mae.alias,concat(mae.nombre,' ',mae.descripcion)) as padre,if(rec.codbarras_hijo!='NULL',rec.codbarras_hijo,'ERROR') as codigo_hijo,if(rec.codbarras_hijo!='NULL',if(length(ma2.alias)>0,ma2.alias,concat(ma2.nombre,' ',ma2.descripcion)),'DSCP ERROR') as dscp_hijo,if(rec.codbarras_hijo!='NULL',rec.cantidad,0) as cnt,if(rec.codbarras_hijo!='NULL',sum(doc.cantidad)*rec.cantidad,0) as cons from docventa doc left join maestro mae on mae.codbarras=doc.codbarras left join recetas rec on rec.codbarras_padre=doc.codbarras and rec.modo=0 and (rec.tipo=doc.dist_type or rec.tipo=2) left join maestro ma2 on ma2.codbarras=rec.codbarras_hijo where doc.estado='B' and doc.fecha_vta "+condtiempo+" and doc.pv="+str(pos_num)+" group by doc.codbarras,rec.codbarras_hijo order by doc.codbarras,rec.codbarras_hijo)"
     sql+=" union "
     sql+="(select aux.codbarras_auxiliar,mae.precio,sum(aux.cantidad_auxiliar),if(length(mae.alias)>0,mae.alias,concat(mae.nombre,' ',mae.descripcion)) as padre,ifnull(if(aux.codbarras_auxiliar!='NULL',rec.codbarras_hijo,'ERROR'),'') as codigo_hijo,ifnull(if(aux.codbarras_auxiliar!='NULL',if(length(ma2.alias)>0,ma2.alias,concat(ma2.nombre,' ',ma2.descripcion)),'DSCP ERROR'),'') as dscp_hijo,ifnull(if(aux.codbarras_auxiliar!='NULL',rec.cantidad,0),'') as cnt,ifnull(if(aux.codbarras_auxiliar!='NULL',sum(aux.cantidad_auxiliar)*rec.cantidad,0),0) as cons from operaciones_vta_aux aux left join maestro mae on mae.codbarras=aux.codbarras_auxiliar left join recetas rec on rec.codbarras_padre=aux.codbarras_auxiliar and rec.modo=0 and rec.tipo=2 left join maestro ma2 on ma2.codbarras=rec.codbarras_hijo where aux.n_doc_base in (select n_doc_base from docventa where estado='B' and fecha_vta "+str(condtiempo)+" and pv="+str(pos_num)+" group by n_doc_base) group by aux.codbarras_auxiliar,rec.codbarras_hijo order by aux.codbarras_auxiliar,rec.codbarras_hijo)"
     cuenta,resultado=query(sql)
 
 
 def producto_data(codbarras):
-    sql = """select if(length(mae.alias)>0,mae.alias,
-        concat(mae.nombre,' ',mae.descripcion)),round(mae.precio,2)
-        from maestro mae where mae.codbarras='%s'""" % (codbarras)
-    cnt,rso=query(sql,0)
-    nombre=rso[0]
-    precio=round(rso[1],2)
-    return nombre,precio
+    """
+    Product information
+    """
+    sql = """select if(length(mae.alias)>0, mae.alias,
+        concat(mae.nombre, ' ', mae.descripcion)),
+        round(if(val.valor is NULL,mae.precio,val.valor),2) from maestro
+        mae left join maestro_valores val on val.codbarras=mae.id and
+        val.estado=1 where mae.id='%s' and
+        mae.genero='%s' and mae.estado=1""" % (codbarras, datos_modo)
+    cnt, rso = query(sql, 0)
+    nombre = rso[0]
+    precio = round(rso[1], 2)
+    return nombre, precio
 
 
 def datopc(titulo,panel,caracter,cond_control,sql_condicion=''):
 def sintesis(condicion='',partes='4'):
     if condicion!='':
         condicion="and "+condicion
-    sql="select distinct(doc.codigo),if(length(mae.alias)>0,mae.alias,concat(mae.nombre,' ',mae.descripcion)),sum(doc.cantidad),sum(doc.cantidad/"+partes+") from docventa as doc,maestro as mae where doc.codigo=mae.codbarras and doc.pv="+str(pos_num)+" and doc.caja="+str(caja_num)+" "+condicion
-    sql+=" group by codigo"
+    sql="select distinct(doc.codbarras),if(length(mae.alias)>0,mae.alias,concat(mae.nombre,' ',mae.descripcion)),sum(doc.cantidad),sum(doc.cantidad/"+partes+") from docventa as doc,maestro as mae where doc.codbarras=mae.id and doc.pv="+str(pos_num)+" and doc.caja="+str(caja_num)+" "+condicion
+    sql+=" group by doc.codbarras"
     cuenta,resultado=query(sql)
     return resultado
 
         concat(d.nombre,' ',d.descripcion)),
         c.cantidad from delivery as a,clientes as b,docventa as c,
         maestro as d where a.cliente=b.id and c.n_doc_base=a.docnum
-        and c.codigo=d.id and c.estado='1' and
+        and c.codbarras=d.id and c.estado='1' and
         (a.tiempo>='%s' and a.tiempo<='%s')
         order by a.tiempo""" % (apertura, cierre)
     cuenta,resultado=query(sql)
         no_doc=ingresodato(linea,panel_cons,15,'',1,0)
         if no_doc=='Anular':
             break
-        #sql="""select doc.fp,fpa.nombre,doc.cv_ing,
-            #concat(usr.nombres,' ',usr.apellidos),doc.cantidad,
-            #doc.codigo,if(length(mae.alias)>0,mae.alias,
-            #concat(mae.nombre,' ',mae.descripcion)),doc.precio,
-            #doc.total,doc.tiempo,doc.cliente,dir.nombre_corto,
-            #doc.n_doc_base from docventa doc left join maestro
-            #mae on mae.codbarras=doc.codigo left join formas_pago
-            #fpa on fpa.forma_pago=doc.fp left join usuarios_pos usr on
-            #usr.codigo=doc.cv_ing left join directorio dir on
-            #dir.doc_id=doc.cliente where doc.n_doc_base='%s'
-            #and doc.comprobante='%s' and doc.caja=%s
-            #and doc.pv='%s' and doc.vta>='%s'""" % (no_doc,
-            #compr_id, caja_num, pos_num, apertura)
-        sql = """select substring_index(doc.medios_pago,':',1) fp_ad,fpa.nombre,doc.cv_ing,
-            concat(usr.first_name,' ',usr.last_name) usr_name,doc.cantidad,
-            doc.codigo,if(length(mae.alias)>0,mae.alias,
+        sql = """select substring_index(doc.medios_pago,':',1) fp_ad,
+            fpa.nombre,doc.cv_ing,
+            concat(usr.first_name,' ',usr.last_name) usr_name,
+            doc.cantidad,doc.codbarras,if(length(mae.alias)>0,mae.alias,
             concat(mae.nombre,' ',mae.descripcion)) alias,doc.precio,
             doc.total,doc.tiempo,doc.cliente,dir.nombre_corto,
             doc.n_doc_base from docventa doc left join maestro
-            mae on mae.id=doc.codigo left join formas_pago
-            fpa on fpa.id=substring_index(doc.medios_pago,':',1) left join auth_user usr on
-            usr.id=doc.cv_ing left join directorio dir on
-            dir.doc_id=doc.cliente where doc.n_doc_base='%s'
-            and doc.comprobante='%s' and doc.caja=%s
+            mae on mae.id=doc.codbarras left join formas_pago
+            fpa on fpa.id=substring_index(doc.medios_pago,':',1)
+            left join auth_user usr on usr.id=doc.cv_ing left join
+            directorio dir on dir.doc_id=doc.cliente where
+            doc.n_doc_base='%s' and doc.comprobante='%s' and doc.caja=%s
             and doc.pv='%s' and doc.fecha_vta='%s'""" % (no_doc,
             compr_id, caja_num, pos_num, apertura[:10])
         cuenta,resultado=query(sql)
 #                   print cier
 #                   sys.exit()
 #                   aper,cier=tiempocaja(aper)
-                    sql="select comprobante,n_doc_base,codigo,cantidad,total from docventa where fecha_vta between date('"+str(aper)+"') and date('"+str(cier)+"') and comprobante>7"
+                    sql="select comprobante,n_doc_base,codbarras,cantidad,total from docventa where fecha_vta between date('"+str(aper)+"') and date('"+str(cier)+"') and comprobante>7"
                     lineas,tipo=datos_cons(sql)
                     doc_m=doc_man(aper)
                     cab2=string.join(doc_m)

File controllers/almacen.py

         'almacenes.almacen_origen', 'almacenes.almacen_destino', 'almacenes.codbarras',
         'almacenes.ingreso', 'almacenes.salida', 'almacenes.observaciones']
     #    'docventa.estado','docventa.comprobante','docventa.cliente','docventa.cv_ing',
-    #    'docventa.codigo','docventa.cantidad','docventa.precio','docventa.sub_total_bruto',
+    #    'docventa.codbarras','docventa.cantidad','docventa.precio','docventa.sub_total_bruto',
     #    'docventa.total','docventa.cv_anul','docventa.condicion_comercial']
     grid.action_links = ['view']
     grid.action_headers = ['Ver']
     grid.filters = ['almacenes.almacen','almacenes.modo','almacenes.estado',
         'almacenes.fecha_doc', 'almacenes.n_doc_base', 'almacenes.proveedor',
         'almacenes.codbarras']
-    #    'docventa.cliente','docventa.codigo','docventa.condicion_comercial']
+    #    'docventa.cliente','docventa.codbarras','docventa.condicion_comercial']
     #grid.filter_query = lambda f,v: f==v
     grid.enabled_rows = ['header','filter', 'pager','totals','footer']
     return dict(grid=grid())

File controllers/configuracion.py

 # -*- coding: utf-8 -*-
+import datetime
 
 restricciones = True
 
+today = datetime.date.today()
+
 
 @auth.requires(restricciones)
 def data():
 
 
 @auth.requires(restricciones)
+def maestro_valores():
+    """
+    Muestra los valores de los productos
+    """
+    product = request.vars.producto
+    row_process = False
+    rows = []
+    items_per_page = 0
+    form = SQLFORM.factory(
+        Field('producto', 'integer', label='Producto', default=product,
+            widget = SQLFORM.widgets.autocomplete(
+            request, db.maestro.alias, id_field=db.maestro.id, mode=1,
+            #filterby=db.maestro.genero, filtervalue='1'
+            )),
+        )
+    if len(request.args):
+        page=int(request.args[0])
+    else:
+        page=0
+    if form.accepts(request.vars, session, formname='form_bas'):
+        session.prod_vta = form.vars.producto
+        row_process = True
+    form2 = SQLFORM.factory(
+        Field('fecha', 'date', label='Fecha', default=today),
+        Field('producto', db.maestro, default=session.prod_vta, label='Producto',
+            requires=IS_IN_DB(db, db.maestro, '%(alias)s', zero='[Seleccionar]',
+            error_message='Seleccione un producto')),
+        Field('valor', 'double', requires=IS_NOT_EMPTY(), default=0.0),
+        Field('estado', 'integer', requires=IS_NOT_EMPTY(), default=1),
+        )
+    if form2.accepts(request.vars, session, formname='form_aux'):
+        db.maestro_valores.insert(fecha=form2.vars.fecha, codbarras=form2.vars.producto,
+            valor=form2.vars.valor, estado=form2.vars.estado)
+        response.flash = 'Registro Procesado'
+        row_process = True
+    if row_process:
+        items_per_page = 20
+        limitby = (page*items_per_page,(page+1)*items_per_page+1)
+        rows = db(db.maestro_valores.codbarras == session.prod_vta).select(db.maestro_valores.id,
+            db.maestro_valores.fecha, db.maestro_valores.pv, db.maestro_valores.codbarras,
+            db.maestro.nombre, db.maestro.descripcion, db.maestro.alias, db.maestro.genero,
+            db.maestro_valores.valor, db.maestro_valores.user_ing, db.maestro_valores.estado,
+            left=(db.maestro.on(db.maestro_valores.codbarras==db.maestro.id)))
+    return dict(form=form, form2=form2, rows=rows, page=page, items_per_page=items_per_page)
+
+
+@auth.requires(restricciones)
 def filtrar_productos():
     """
     Muestra las configuraciones de los productos
     """
     Agregar nuevo registro a 'maestro'
     """
-    producto = request.vars.producto
     form = SQLFORM.factory(
         Field('producto', 'integer', label='Producto', widget = SQLFORM.widgets.autocomplete(
      request, db.maestro.alias, id_field=db.maestro.id, mode=1,
      filterby=db.maestro.genero, filtervalue='1')),
         )
-    form2 = SQLFORM(db.maestro, producto, fields=['codbarras','genero','empaque',
-            'catmod','precio','nombre','descripcion','alias','unidad_medida',
-            'unidad_medida_valor', 'estado'], submit_button='Modificar')
     if form.accepts(request.vars, session, formname='form_bas'):
         session.prod = form.vars.producto
-        #record = db.maestro(session.prod)# or redirect(URL('index'))
+    form2 = SQLFORM(db.maestro, session.prod, fields=['registro','codbarras','genero','empaque',
+        'catmod','precio','nombre','descripcion','alias','unidad_medida',
+        'unidad_medida_valor', 'estado'], submit_button='Modificar')
     if form2.accepts(request.vars, session, formname='form_aux'):
-            response.flash = 'Registro Modificado'
+        response.flash = 'Registro Modificado'
     return dict(form=form, form2=form2)
 
 
     """
     Agregar nuevo registro a 'maestro'
     """
-    producto = request.vars.producto
     form = SQLFORM.factory(
         Field('producto', 'integer', label='Producto', widget = SQLFORM.widgets.autocomplete(
      request, db.maestro.alias, id_field=db.maestro.id, mode=1,
      filterby=db.maestro.genero, filtervalue='2')),
         )
-    form2 = SQLFORM(db.maestro, producto, fields=['codbarras','genero','empaque',
+    if form.accepts(request.vars, session, formname='form_bas'):
+        session.prod = form.vars.producto
+    form2 = SQLFORM(db.maestro, session.prod, fields=['codbarras','genero','empaque',
             'catmod','precio','nombre','descripcion','alias','unidad_medida',
             'unidad_medida_valor', 'estado'], submit_button='Modificar')
-    if form.accepts(request.vars, session, formname='form_bas'):
-        session.prod = form.vars.producto
-        #record = db.maestro(session.prod)# or redirect(URL('index'))
     if form2.accepts(request.vars, session, formname='form_aux'):
             response.flash = 'Registro Modificado'
     return dict(form=form, form2=form2)
     """
     Agregar nueva receta
     """
-    session.prod_vta = request.vars.prod_venta
-    session.prod_alm = request.vars.prod_almacen
+    query = """select rec.id,rec.codbarras_padre,mae.alias,rec.cantidad,rec.codbarras_hijo,
+        ma2.alias,rec.modo, rec.estado from recetas rec left join maestro mae
+        on mae.id=rec.codbarras_padre left join maestro ma2 on
+        ma2.id=rec.codbarras_hijo where rec.codbarras_padre='%s'
+    """
+    prod_vta = request.vars.prod_venta
+    #session.prod_alm = request.vars.prod_almacen
+    rows = []
     form = SQLFORM.factory(
-        Field('prod_venta', 'integer', requires=IS_NOT_EMPTY(), default=session.prod_vta,
+        Field('prod_venta', 'integer', requires=IS_NOT_EMPTY(), default=prod_vta,
             label='Producto Padre', widget = SQLFORM.widgets.autocomplete(
             request, db.maestro.alias, id_field=db.maestro.id, mode=1,
             filterby=db.maestro.genero, filtervalue='2')),
         Field('cantidad', 'double', requires=IS_NOT_EMPTY(), default=''),
-        #Field('prod_almacen', 'integer', requires=IS_NOT_EMPTY(), default=session.prod_alm,
-        #    label='Producto Hijo', widget = SQLFORM.widgets.autocomplete(
-        #    request, db.maestro.alias, id_field=db.maestro.id, mode=1,
-        #    filterby=db.maestro.genero, filtervalue='1'))
+        Field('codbarras', db.maestro, label='Producto hijo',
+          requires=IS_IN_DB(db, db.maestro, '%(genero)s-%(nombre)s %(descripcion)s', zero='[Seleccionar]',
+                            error_message='Seleccione un código'), notnull=False),
         )
+    if len(request.args):
+        page=int(request.args[0])
+    else:
+        page=0
+    sql = query % (prod_vta)
+    rows = db.executesql(sql)
+    items_per_page = 20
+    limitby = (page*items_per_page,(page+1)*items_per_page+1)
     if form.accepts(request.vars, session):
         session.prod_vta = form.vars.prod_venta
         session.prod_alm = form.vars.prod_almacen
         session.cantidad = form.vars.cantidad
-        #db.recetas.insert(codbarras_padre=session.prod_vta, codbarras_hijo=session.prod_alm,
-        #    cantidad=session.cantidad)
-    return dict(form=form)
+        db.recetas.insert(codbarras_padre=session.prod_vta, codbarras_hijo=session.prod_alm,
+            cantidad=session.cantidad)
+    return dict(form=form, rows=rows, page=page, items_per_page=items_per_page)
 
 
 @auth.requires(restricciones)

File controllers/default.py

     example action using the internationalization operator T and flash
     rendered by views/default/index.html or views/generic.html
     """
-    return dict(message='Bienvenido')
+    reports = tiny_alert()
+    return dict(reports=reports)
 
 
 def user():
       LOAD('default','data.load',args='tables',ajax=True,user_signature=True)
     """
     return dict(form=crud())
+
+
+def tiny_alert():
+    reports = {}
+    message = "Productos de Venta sin valor"
+    rows = db((db.maestro.genero==2) & (db.maestro.precio==0)).count()
+    reports[message] = rows
+    message = "Productos de Almacen sin costo"
+    rows = db((db.maestro.genero==1) & (db.maestro.precio==0)).count()
+    reports[message] = rows
+    message = "Productos de Almacen sin valores en unidad de medida"
+    rows = db((db.maestro.genero==1) & (db.maestro.unidad_medida_valor==0)).count()
+    reports[message] = rows
+    return reports

File controllers/ventas.py

     grid.crud_function = 'data'
     grid.fields = ['docventa.pv','docventa.caja','docventa.fecha_vta','docventa.n_doc_base',
         'docventa.estado','docventa.comprobante','docventa.cliente','docventa.cv_ing',
-        'docventa.codigo','docventa.cantidad','docventa.precio','docventa.sub_total_bruto',
+        'docventa.codbarras','docventa.cantidad','docventa.precio','docventa.sub_total_bruto',
         'docventa.total','docventa.cv_anul','docventa.condicion_comercial']
     grid.action_links = ['view']
     grid.action_headers = ['Ver']
     grid.totals = ['docventa.cantidad','docventa.sub_total_bruto']
     grid.filters = ['docventa.fecha_vta','docventa.estado','docventa.comprobante',
-        'docventa.cliente','docventa.codigo','docventa.condicion_comercial','docventa.cv_ing']
+        'docventa.cliente','docventa.codbarras','docventa.condicion_comercial','docventa.cv_ing']
     #grid.filter_query = lambda f,v: f==v
     grid.enabled_rows = ['header','filter', 'pager','totals','footer']
     return dict(grid=grid())
         if session.producto:
             rows = db((db.docventa.estado==1) & (db.docventa.fecha_vta>=session.fecha_inicio_vta) &
                 (db.docventa.fecha_vta<=session.fecha_fin_vta) &
-                (db.docventa.codigo==session.producto)
-                ).select(db.docventa.comprobante,db.docventa.n_doc_base,db.docventa.codigo,
+                (db.docventa.codbarras==session.producto)
+                ).select(db.docventa.comprobante,db.docventa.n_doc_base,db.docventa.codbarras,
                 db.maestro.alias,db.docventa.sub_total_bruto,
-                left=db.docventa.on(db.docventa.codigo==db.maestro.id),
+                left=db.docventa.on(db.docventa.codbarras==db.maestro.id),
                 groupby=db.docventa.comprobante|db.docventa.n_doc_base)
         else:
             rows = db((db.docventa.estado==1) & (db.docventa.fecha_vta>=session.fecha_inicio_vta) &
                 (db.docventa.fecha_vta<=session.fecha_fin_vta) #&
-                #(db.docventa.codigo==session.producto)
-                ).select(db.docventa.comprobante,db.docventa.n_doc_base,db.docventa.codigo,
+                #(db.docventa.codbarras==session.producto)
+                ).select(db.docventa.comprobante,db.docventa.n_doc_base,db.docventa.codbarras,
                 db.maestro.alias,db.docventa.sub_total_bruto,
-                left=db.docventa.on(db.docventa.codigo==db.maestro.id),
+                left=db.docventa.on(db.docventa.codbarras==db.maestro.id),
                 groupby=db.docventa.comprobante|db.docventa.n_doc_base)
     return dict(form=form, rows=rows)
 

File databases/fb9e0f43235cc63d517a4798d3b383fb_almacenes.table

 sg6
 I5
 sg7
-S'DATETIME'
+S'DATETIME NOT NULL'
 p102
 ssS'registro'
 p103
 sg6
 I15
 sg7
-S'DATE'
+S'DATE NOT NULL'
 p142
 ssS'masa'
 p143

File databases/fb9e0f43235cc63d517a4798d3b383fb_almacenes_lista.table

 S'registro'
 p2
 (dp3
-S'sortable'
+S'type'
 p4
+S'datetime'
+p5
+sS'sortable'
+p6
 I2
-sS'type'
-p5
-S'datetime'
-p6
 sS'sql'
 p7
 S'DATETIME'
 p9
 (dp10
 g4
-I3
-sg5
 S'string'
 p11
+sg6
+I3
 sg7
 S'VARCHAR(255)'
 p12
 p13
 (dp14
 g4
-I5
-sg5
 g11
+sg6
+I6
 sg7
 S'VARCHAR(255)'
 p15
 p16
 (dp17
 g4
-I8
-sg5
 S'integer'
 p18
+sg6
+I9
 sg7
 S'INT'
 p19
 p20
 (dp21
 g4
-I7
-sg5
 g11
+sg6
+I8
 sg7
 S'VARCHAR(255)'
 p22
 p23
 (dp24
 g4
+g11
+sg6
 I4
-sg5
-g11
 sg7
 S'VARCHAR(255)'
 p25
-ssS'modo'
+ssS'ubigeo'
 p26
 (dp27
-S'type'
-p28
-S'integer'
-p29
-sS'sortable'
-p30
-I5
-sS'sql'
-p31
-S'INT'
-p32
-ssS'doc_id'
-p33
-(dp34
 g4
-I9
-sg5
 g11
+sg6
+I7
 sg7
 S'VARCHAR(255)'
-p35
+p28
+ssS'doc_id'
+p29
+(dp30
+g4
+g11
+sg6
+I10
+sg7
+S'VARCHAR(255)'
+p31
 ssS'id'
-p36
-(dp37
+p32
+(dp33
 g4
+g32
+sg6
 I1
-sg5
-S'id'
-p38
 sg7
 S'INT AUTO_INCREMENT NOT NULL'
-p39
-ssS'ubigeo'
-p40
-(dp41
+p34
+ssS'modo'
+p35
+(dp36
 g4
-I6
-sg5
-g11
+g18
+sg6
+I5
 sg7
-S'VARCHAR(255)'
-p42
+S'INT'
+p37
 ss.

File databases/fb9e0f43235cc63d517a4798d3b383fb_almacenes_ubicacion.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_areas.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_articulos.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_auth_cas.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_auth_event.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_auth_group.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_auth_membership.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_auth_permission.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_auth_user.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_backup.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_casas.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_categorias.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_catmod.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_clientes_preferentes.table

 I4
 sS'sql'
 p7
-S'DATETIME'
+S'DATETIME NOT NULL'
 p8
 ssS'registro'
 p9

File databases/fb9e0f43235cc63d517a4798d3b383fb_compras_ordenes.table

 sg6
 I3
 sg7
-S'DATETIME'
+S'DATETIME NOT NULL'
 p64
 ssS'registro'
 p65

File databases/fb9e0f43235cc63d517a4798d3b383fb_condiciones_comerciales.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_control_insumos.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_control_produccion.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_criterio.table

 p7
 S'INT, INDEX pv__idx (pv), FOREIGN KEY (pv) REFERENCES puntos_venta(id) ON DELETE CASCADE'
 p8
-ssS'turno'
+ssS'grupo_distribucion'
 p9
 (dp10
-S'sortable'
+g4
+S'string'
 p11
+sg6
+I3
+sg7
+S'VARCHAR(255)'
+p12
+ssS'turno'
+p13
+(dp14
+g4
+g11
+sg6
 I4
-sS'type'
-p12
-S'string'
-p13
-sS'sql'
-p14
+sg7
 S'VARCHAR(255)'
 p15
 ssS'porcentaje'
 p16
 (dp17
-g11
-I5
-sg12
+g4
 S'double'
 p18
-sg14
+sg6
+I5
+sg7
 S'DOUBLE'
 p19
 ssS'codbarras'
 p20
 (dp21
-g11
-I6
-sg12
+g4
 S'reference maestro'
 p22
-sg14
+sg6
+I6
+sg7
 S'INT, INDEX codbarras__idx (codbarras), FOREIGN KEY (codbarras) REFERENCES maestro(id) ON DELETE CASCADE'
 p23
 ssS'id'
 p24
 (dp25
-g11
+g4
+g24
+sg6
 I1
-sg12
-S'id'
+sg7
+S'INT AUTO_INCREMENT NOT NULL'
 p26
-sg14
-S'INT AUTO_INCREMENT NOT NULL'
-p27
-ssS'grupo_distribucion'
-p28
-(dp29
-g11
-I3
-sg12
-g13
-sg14
-S'VARCHAR(255)'
-p30
 ss.

File databases/fb9e0f43235cc63d517a4798d3b383fb_cuentas.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_cuentas_por_cobrar.table

 S'fecha_doc'
 p2
 (dp3
-S'sortable'
+S'type'
 p4
+S'date'
+p5
+sS'sortable'
+p6
 I3
-sS'type'
-p5
-S'date'
-p6
 sS'sql'
 p7
 S'DATE'
 p9
 (dp10
 g4
-I2
-sg5
 S'datetime'
 p11
+sg6
+I2
 sg7
 S'DATETIME'
 p12
 p13
 (dp14
 g4
-I7
-sg5
 S'double'
 p15
+sg6
+I7
 sg7
 S'DOUBLE'
 p16
 p17
 (dp18
 g4
-I6
-sg5
 S'integer'
 p19
+sg6
+I6
 sg7
 S'INT'
 p20
-ssS'bruto_salida'
+ssS'fecha'
 p21
 (dp22
 g4
-I12
-sg5
-g15
+g5
+sg6
+I13
 sg7
-S'DOUBLE'
+S'DATE'
 p23
-ssS'cliente'
+ssS'bruto_salida'
 p24
 (dp25
 g4
+g15
+sg6
+I12
+sg7
+S'DOUBLE'
+p26
+ssS'id'
+p27
+(dp28
+g4
+g27
+sg6
+I1
+sg7
+S'INT AUTO_INCREMENT NOT NULL'
+p29
+ssS'impuesto_ingreso'
+p30
+(dp31
+g4
+g15
+sg6
+I8
+sg7
+S'DOUBLE'
+p32
+ssS'bruto_ingreso'
+p33
+(dp34
+g4
+g15
+sg6
+I9
+sg7
+S'DOUBLE'
+p35
+ssS'neto_salida'
+p36
+(dp37
+g4
+g15
+sg6
+I10
+sg7
+S'DOUBLE'
+p38
+ssS'impuesto_salida'
+p39
+(dp40
+g4
+g15
+sg6
+I11
+sg7
+S'DOUBLE'
+p41
+ssS'cliente'
+p42
+(dp43
+g4
+S'reference directorio'
+p44
+sg6
 I5
-sg5
-S'reference directorio'
-p26
 sg7
 S'INT, INDEX cliente__idx (cliente), FOREIGN KEY (cliente) REFERENCES directorio(id) ON DELETE CASCADE'
-p27
-ssS'impuesto_ingreso'
-p28
-(dp29
+p45
+ssS'documento'
+p46
+(dp47
 g4
-I8
-sg5
-g15
-sg7
-S'DOUBLE'
-p30
-ssS'bruto_ingreso'
-p31
-(dp32
-g4
-I9
-sg5
-g15
-sg7
-S'DOUBLE'
-p33
-ssS'neto_salida'
-p34
-(dp35
-g4
-I10
-sg5
-g15
-sg7
-S'DOUBLE'
-p36
-ssS'fecha'
-p37
-(dp38
-S'type'
-p39
-S'date'
-p40
-sS'sortable'
-p41
-I13
-sS'sql'
-p42
-S'DATE'
-p43
-ssS'impuesto_salida'
-p44
-(dp45
-g4
-I11
-sg5
-g15
-sg7
-S'DOUBLE'
-p46
-ssS'id'
-p47
-(dp48
-g4
-I1
-sg5
-S'id'
-p49
-sg7
-S'INT AUTO_INCREMENT NOT NULL'
-p50
-ssS'documento'
-p51
-(dp52
-g4
+S'string'
+p48
+sg6
 I4
-sg5
-S'string'
-p53
 sg7
 S'VARCHAR(255)'
-p54
+p49
 ss.

File databases/fb9e0f43235cc63d517a4798d3b383fb_cuentas_por_pagar.table

 S'fecha_doc'
 p2
 (dp3
-S'sortable'
+S'type'
 p4
+S'date'
+p5
+sS'sortable'
+p6
 I3
-sS'type'
-p5
-S'date'
-p6
 sS'sql'
 p7
 S'DATE'
 p9
 (dp10
 g4
-I2
-sg5
 S'datetime'
 p11
+sg6
+I2
 sg7
 S'DATETIME'
 p12
 p13
 (dp14
 g4
-I7
-sg5
 S'double'
 p15
+sg6
+I7
 sg7
 S'DOUBLE'
 p16
 p17
 (dp18
 g4
-I6
-sg5
 S'integer'
 p19
+sg6
+I6
 sg7
 S'INT'
 p20
-ssS'bruto_salida'
+ssS'fecha'
 p21
 (dp22
 g4
-I12
-sg5
-g15
+g5
+sg6
+I13
 sg7
-S'DOUBLE'
+S'DATE'
 p23
-ssS'impuesto_ingreso'
+ssS'bruto_ingreso'
 p24
 (dp25
 g4
-I8
-sg5
 g15
+sg6
+I9
 sg7
 S'DOUBLE'
 p26
-ssS'bruto_ingreso'
+ssS'bruto_salida'
 p27
 (dp28
 g4
-I9
-sg5
 g15
+sg6
+I12
 sg7
 S'DOUBLE'
 p29
-ssS'neto_salida'
+ssS'impuesto_ingreso'
 p30
 (dp31
 g4
-I10
-sg5
 g15
+sg6
+I8
 sg7
 S'DOUBLE'
 p32
-ssS'fecha'
+ssS'proveedor'
 p33
 (dp34
-S'type'
+g4
+S'reference directorio'
 p35
-S'date'
+sg6
+I5
+sg7
+S'INT, INDEX proveedor__idx (proveedor), FOREIGN KEY (proveedor) REFERENCES directorio(id) ON DELETE CASCADE'
 p36
-sS'sortable'
+ssS'neto_salida'
 p37
-I13
-sS'sql'
-p38
-S'DATE'
+(dp38
+g4
+g15
+sg6
+I10
+sg7
+S'DOUBLE'
 p39
 ssS'impuesto_salida'
 p40
 (dp41
 g4
+g15
+sg6
 I11
-sg5
-g15
 sg7
 S'DOUBLE'
 p42
-ssS'proveedor'
+ssS'id'
 p43
 (dp44
 g4
-I5
-sg5
-S'reference directorio'
-p45
-sg7
-S'INT, INDEX proveedor__idx (proveedor), FOREIGN KEY (proveedor) REFERENCES directorio(id) ON DELETE CASCADE'
-p46
-ssS'id'
-p47
-(dp48
-g4
+g43
+sg6
 I1
-sg5
-S'id'
-p49
 sg7
 S'INT AUTO_INCREMENT NOT NULL'
-p50
+p45
 ssS'documento'
-p51
-(dp52
+p46
+(dp47
 g4
+S'string'
+p48
+sg6
 I4
-sg5
-S'string'
-p53
 sg7
 S'VARCHAR(255)'
-p54
+p49
 ss.

File databases/fb9e0f43235cc63d517a4798d3b383fb_delivery.table

 I4
 sS'sql'
 p7
-S'DATETIME'
+S'DATETIME NOT NULL'
 p8
 ssS'registro'
 p9

File databases/fb9e0f43235cc63d517a4798d3b383fb_directorio.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_directorio_auxiliar.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_documentos_comerciales.table

File contents unchanged.

File databases/fb9e0f43235cc63d517a4798d3b383fb_documentos_identidad.table

 S'nombre'
 p2
 (dp3
-S'sortable'
+S'type'
 p4
+S'string'
+p5
+sS'sortable'
+p6
 I3
-sS'type'
-p5
-S'string'
-p6
 sS'sql'
 p7
 S'VARCHAR(255)'
 p9
 (dp10
 g4
-I2
-sg5
 S'datetime'
 p11
+sg6
+I2
 sg7
 S'DATETIME'
 p12
 p13
 (dp14
 g4
+g13
+sg6
 I1
-sg5
-S'id'
-p15
 sg7
 S'INT AUTO_INCREMENT NOT NULL'
+p15
+ssS'longitud'
 p16
-ssS'longitud'
-p17
-(dp18
-S'type'
+(dp17
+g4
+S'integer'
+p18
+sg6
+I4
+sg7
+S'INT'
 p19
-S'integer'
-p20
-sS'sortable'
-p21
-I4
-sS'sql'
-p22
-S'INT'
-p23
 ss.

File databases/fb9e0f43235cc63d517a4798d3b383fb_docventa.table

 S'cantidad'
 p2
 (dp3
-S'sortable'
+S'type'
 p4
-I18
-sS'type'
+S'integer'
 p5
-S'integer'
+sS'sortable'
 p6
+I19
 sS'sql'
 p7
 S'INT'
 p9
 (dp10
 g4
-I27
-sg5
-g6
+g5
+sg6
+I28
 sg7
 S'INT'
 p11
-ssS'precio'
+ssS'n_doc_prefijo'
 p12
 (dp13
 g4
-I17
-sg5
-S'double'
+S'string'
 p14
+sg6
+I31
 sg7
-S'DOUBLE'
+S'VARCHAR(255)'
 p15
 ssS'condicion_comercial'
 p16
 (dp17
 g4
-I33
-sg5
 S'reference condiciones_comerciales'
 p18
+sg6
+I36
 sg7
 S'INT, INDEX condicion_comercial__idx (condicion_comercial), FOREIGN KEY (condicion_comercial) REFERENCES condiciones_comerciales(id) ON DELETE CASCADE'
 p19
 p20
 (dp21
 g4
-I24
-sg5
-g14
+S'double'
+p22
+sg6
+I25
 sg7
 S'DOUBLE'
-p22
+p23
 ssS'medios_pago'
-p23
-(dp24
-S'type'
-p25
-S'string'
+p24
+(dp25
+g4
+g14
+sg6
+I12
+sg7
+S'VARCHAR(255)'
 p26
-sS'sortable'
+ssS'total'
 p27
-I13
-sS'sql'
-p28
-S'VARCHAR(255)'
+(dp28
+g4
+g22
+sg6
+I23
+sg7
+S'DOUBLE'
 p29
-ssS'total'
+ssS'codbarras'
 p30
 (dp31
 g4
-I22
-sg5
-g14
+S'reference maestro'
+p32
+sg6
+I15
 sg7
-S'DOUBLE'
-p32
+S'INT, INDEX codbarras__idx (codbarras), FOREIGN KEY (codbarras) REFERENCES maestro(id) ON DELETE CASCADE'
+p33
 ssS'id'
-p33
-(dp34
+p34
+(dp35
 g4
+g34
+sg6
 I1
-sg5
-S'id'
-p35
 sg7
 S'INT AUTO_INCREMENT NOT NULL'
 p36
 p37
 (dp38
 g4
-I3
-sg5
 S'reference puntos_venta'
 p39
+sg6
+I3
 sg7
 S'INT, INDEX pv__idx (pv), FOREIGN KEY (pv) REFERENCES puntos_venta(id) ON DELETE CASCADE'
 p40
 p41
 (dp42
 g4
+g14
+sg6
 I14
-sg5
-S'string'
-p43
 sg7
 S'VARCHAR(255)'
+p43
+ssS'vales'
 p44
-ssS'vales'
-p45
-(dp46
+(dp45
 g4
+g14
+sg6
 I13
-sg5
-g43
 sg7
 S'VARCHAR(255)'
+p46
+ssS'n_doc_sufijo'
 p47
-ssS'n_doc_sufijo'
-p48
-(dp49
+(dp48
 g4
-I29
-sg5
-g43
+g14
+sg6
+I30
 sg7
 S'VARCHAR(255)'
+p49
+ssS'comprobante'
 p50
-ssS'comprobante'
-p51
-(dp52
+(dp51
 g4
+g5
+sg6
 I9
-sg5
-g6
 sg7
 S'INT'
+p52
+ssS'caja'
 p53
-ssS'caja'
-p54
-(dp55
+(dp54
 g4
+g5
+sg6
 I4
-sg5
-g6
 sg7
 S'INT'
+p55
+ssS'mntsol'
 p56
-ssS'mntsol'
-p57
-(dp58
+(dp57
 g4
-I25
-sg5
-g14
+g22
+sg6
+I26
 sg7
 S'DOUBLE'
+p58
+ssS'sub_total_impto'
 p59
-ssS'sub_total_impto'
-p60
-(dp61
+(dp60
 g4
-I20
-sg5
-g43
+g14
+sg6
+I21
 sg7
 S'VARCHAR(255)'
+p61
+ssS'sub_total_bruto'
 p62
-ssS'sub_total_bruto'
-p63
-(dp64
+(dp63
 g4
-I19
-sg5
-g14
+g22
+sg6
+I20
 sg7
 S'DOUBLE'
+p64
+ssS'tiempo'
 p65
-ssS'tiempo'
-p66
-(dp67
+(dp66
 g4
+S'datetime'
+p67
+sg6
 I6
-sg5
-S'datetime'
+sg7
+S'DATETIME NOT NULL'
 p68
+ssS'registro'
+p69
+(dp70
+g4
+g67
+sg6
+I2
 sg7
 S'DATETIME'
-p69
-ssS'registro'
-p70
-(dp71
+p71
+ssS'cv_ing'
+p72
+(dp73
 g4
-I2
-sg5
-g68
+g5
+sg6
+I11
+sg7
+S'INT'
+p74
+ssS'dist_type'
+p75
+(dp76
+g4
+g5
+sg6
+I32
+sg7
+S'INT'
+p77
+ssS'detalle_impto'
+p78
+(dp79
+g4
+g14
+sg6
+I24
+sg7
+S'VARCHAR(255)'
+p80
+ssS'sub_codbarras'
+p81
+(dp82
+g4
+S'reference maestro'
+p83
+sg6
+I17
+sg7
+S'INT, INDEX sub_codbarras__idx (sub_codbarras), FOREIGN KEY (sub_codbarras) REFERENCES maestro(id) ON DELETE CASCADE'
+p84
+ssS'ref_cred'
+p85
+(dp86
+g4
+g5
+sg6
+I34
+sg7
+S'INT'
+p87
+ssS'estado'
+p88
+(dp89
+g4
+g5
+sg6
+I8
+sg7
+S'INT'
+p90
+ssS'fecha_vto'
+p91
+(dp92
+g4
+S'date'
+p93
+sg6
+I35
+sg7
+S'DATE'
+p94
+ssS'detalle'
+p95
+(dp96
+g4
+g14
+sg6
+I16
+sg7
+S'VARCHAR(255)'
+p97
+ssS'n_doc_base'
+p98
+(dp99
+g4
+g5
+sg6
+I7
+sg7
+S'INT'
+p100
+ssS'precio'
+p101
+(dp102
+g4
+g22
+sg6
+I18
+sg7
+S'DOUBLE'
+p103
+ssS'tiempo_null'
+p104
+(dp105
+g4
+g67
+sg6
+I29
 sg7
 S'DATETIME'
-p72
-ssS'cv_ing'
-p73
-(dp74
-g4
-I11
-sg5
-g6
-sg7
-S'INT'
-p75
-ssS'dist_type'
-p76
-(dp77
-S'type'
-p78
-S'integer'
-p79
-sS'sortable'
-p80
-I32
-sS'sql'
-p81
-S'INT'
-p82
-ssS'detalle_impto'
-p83
-(dp84
-g4
-I23
-sg5
-g43
-sg7
-S'VARCHAR(255)'
-p85
-ssS'sub_codbarras'
-p86
-(dp87
-S'sortable'
-p88
-I18
-sS'type'
-p89
-S'string'
-p90
-sS'sql'
-p91
-S'VARCHAR(255)'
-p92
-ssS'ref_cred'
-p93
-(dp94
-S'sortable'
-p95
-I34
-sS'type'
-p96
-S'integer'
-p97
-sS'sql'