Advertisement
dbarrera

Untitled

Feb 4th, 2020
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.00 KB | None | 0 0
  1. from dsn import db, meta, engine
  2. import pandas as pd
  3. from dateutil.parser import parse
  4. from datetime import datetime, timedelta
  5. import xlsxwriter
  6.  
  7. # Rango de Fechas
  8. fec_final = datetime.now()  # Ahora
  9. fec_inicio = fec_final - timedelta(days=20)  # 20 dias atras
  10.  
  11.  
  12. # Tablas
  13. detalle_fac = db.Table('fatfac', meta, autoload=True, autoload_with=engine)
  14. vendedores = db.Table('fapvendedor', meta, autoload=True, autoload_with=engine)
  15. articulos = db.Table('inmart', meta, autoload=True, autoload_with=engine)
  16.  
  17. # Consulta
  18. locales = ['07', '08']
  19.  
  20. query = db.select([
  21.     detalle_fac.c.loccodigo.label('Local'),
  22.     db.cast(detalle_fac.c.facfecemi, db.Date).label('Fecha'),
  23.     detalle_fac.c.artcodigo.label('Codigo'),
  24.     articulos.c.artdescri.label('Descripcion'),
  25.     detalle_fac.c.faccantidad.label('Cantidad'),
  26.     detalle_fac.c.facvalor.label('Subtotal Bruto'),
  27.     detalle_fac.c.facvaldesc.label('Descuento'),
  28.     detalle_fac.c.facvaliva.label('IVA'),
  29.     detalle_fac.c.vencodigo.label('ID'),
  30.     vendedores.c.vennombre.label('Nombre')
  31. ]).select_from(
  32.     detalle_fac.join(articulos, db.and_(
  33.         detalle_fac.c.ciacodigo == articulos.c.ciacodigo,
  34.         detalle_fac.c.artcodigo == articulos.c.artcodigo
  35.     )).join(vendedores, db.and_(
  36.         detalle_fac.c.ciacodigo == vendedores.c.ciacodigo,
  37.         detalle_fac.c.vencodigo == vendedores.c.vencodigo,
  38.         detalle_fac.c.loccodigo == vendedores.c.loccodigo
  39.     ))
  40. ).where(
  41.     db.and_(
  42.         detalle_fac.c.ciacodigo == '01',
  43.         detalle_fac.c.factipo == 'FA',
  44.         detalle_fac.c.facvalor > 0,
  45.         detalle_fac.c.facvalnc == 0,
  46.         detalle_fac.c.facfecemi.between(
  47.             db.cast(fec_inicio_parsed, db.DateTime),
  48.             db.cast(fec_final_parsed, db.DateTime)
  49.         ),
  50.         detalle_fac.c.loccodigo.in_(locales)
  51.     )
  52. ).order_by(
  53.     detalle_fac.c.loccodigo,
  54.     detalle_fac.c.vencodigo,
  55.     detalle_fac.c.artcodigo
  56. )
  57.  
  58. rp = engine.execute(query)
  59. rs = rp.fetchall()
  60.  
  61. for registro in rs:
  62.     print(registro)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement