// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// Reporte:     Reporte de Tickets Facturados con desglose de Impuestos
//
// Sistema:     ADMINPAQ  Versión v2.0 Windows
//
// Descripcion: Revisa las aperturas de cajas del módulo de Punto de Venta y aquellas que
//              esten facturadas desglosa los tickets que conforman la factura global y
//              los importes por porcentaje de impuesto.
//
// Consideraciones :
// Creación  :  Roberto Del Alto Torres.  3/Junio/2003
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// Historia de modificaciones
//  Fecha      Nombre   IDLotus       Descripcion
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// 20/08/2009  ELVS     N.D.5980      ERROR EL REPORTE DE CON FACTURACION GLOBAL DEL MENU DE NOTAS
//                                    DE VENTA NO ARROJA INFORMACION DE AGOSTO DEL 2008 PERO LOS 
//                                    OTROS REPORTES SI.                                   
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

// INICIO PARAMETROS
Parametro pCajaIni = 'CAJA1'
Parametro pCajaFin = 'CAJA1'
Parametro pFechaIni = '20030601'
Parametro pFechaFin = '20030630'
Parametro pCajeroIni = ' '
Parametro pCajeroFin = 'z'

Columnas 10;2, 1.5, 1.5, 2.2

UsaEmpresa tEmpresa;'ADMINPAQW'

UsaTabla tParametros = tEmpresa['MGW10000'] // Parametros de la Empresa

UsaTabla tCajas = tEmpresa['MGW10041'] // Catálogo de Cajas
tCajas.Usaindice['CCODIGOC01']

UsaTabla tAperCajas = tEmpresa['MGW10042'] // Catálogo de Cajas
tAperCajas.Usaindice['CAJAFECAPE']

UsaTabla tPagosNV = tEmpresa['MGW10043'] // Pago de Notas de Venta
tPagosNV.Usaindice['APERTDOC']

UsaTabla tAgentes = tEmpresa['MGW10001'] // Agentes
tAgentes.Usaindice['']

UsaTabla tDocumentos = tEmpresa['MGW10008'] // Documentos
tDocumentos.Usaindice['']

UsaTabla tMovimientos = tEmpresa['MGW10010'] // Movimientos
tMovimientos.Usaindice['iDoctoNumeroMovto']

UsaTabla tProducto = tEmpresa['MGW10005'] // Productos
tProducto.Usaindice['']

USALETRA 'Arial'
ALTURA 11

//VARIABLES GLOBALES 

kMeses = 'Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic'[C0]

//FUNCIONES <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

//***********************************************************************************************
//	EditaFec
// Descripcion: Esta función recibe una fecha con formato ddmmaaaa y la convierte a formato
//	dd/mmm/aaaa
// Entradas :  Fecha : contiene la fecha AAAAMMDD
// Salida :    regresa una cadena con la fecha en formato DD/MMM/AAAA
// Autor :     FBCS junio 2001
//***********************************************************************************************
DefFunc fEditaFecha(aFecha)
   Local lMes
   Local lRegreso

   lMes = @INT(@SubStr(aFecha;4;2))
   lRegreso[0] = @SubStr(aFecha;6;2) & '/' & @Escoge(kMeses;lMes-1) & '/' & @SubStr(aFecha;0;4)
   Retorna lRegreso
FinFunc

//////////////////////////////////////////////////////////////////////////////////
//ENCABEZADO 
ENCAB
    Texto '@TC{255,0,0}@S{8}AdminPAQ' 
    Hoja '"@TC{0,0,0}@S{8}Página: '
    Imprime

    Texto '^@TC{0,0,0}@S{22}' & tEmpresa->Nombre
    Texto '"@TC{0,0,0}@S{8}Fecha: ' & fEditaFecha(@Hoy())
    Imprime

    Texto '^@TC{0,0,0}@S{16}' & ' Reporte de Notas de Venta con Facturación Global'
    Texto '"@TC{0,0,0}@S{8}Hora: ' & @Hora()
    Imprime
    Texto '^@TC{0,0,0}@S{16}' & ' Del: ' & fEditaFecha(pFechaIni) & ' Al: ' & fEditaFecha(pFechaFin)
    Imprime 1
FINENCAB

//PRINCIPAL <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

tParametros.BUSCA PRIMERO

Si pCajaIni = ' '
   tCajas.BUSCA PRIMERO
   pCajaIni = tCajas(ccodigoc01)

   tCajas.BUSCA ULTIMO
   pCajaFin = tCajas(ccodigoc01)
FinSi

MIENTRAS[ tCajas.BUSCA[ pCajaIni & '..' & pCajaFin]; tCajas->Encontro; tCajas.BUSCA SIGUIENTE[1] ]
   
   lFecha = @SUBSTR(pFechaIni;4;2) & '/' & @SUBSTR(pFechaIni;6;2) & '/' & @SUBSTR(pFechaIni;0;4)
   tAperCajas.BUSCA[ tCajas(cidcaja) & ':' & lFecha ]
   SI !tAperCajas->Encontro
      //tAperCajas.BUSCA[ tCajas(cidcaja) & ':' & @SUBSTR(pFechaIni;0;6) ]
      //SI !tAperCajas->Encontro
      //   tAperCajas.BUSCA[ tCajas(cidcaja) & ':' & @SUBSTR(pFechaIni;0;4) ]
      //FINSI
      //SI !tAperCajas->Encontro
      tAperCajas.BUSCA[ @STR(tCajas(cidcaja);0) ]
      //FINSI
   FINSI

   MIENTRAS tAperCajas->Encontro

      lFecha = @SUBSTR(tAperCajas(cfechoraap);6;4) & @SUBSTR(tAperCajas(cfechoraap);0;2) & @SUBSTR(tAperCajas(cfechoraap);3;2)

      //N.D.5980 El ciclo se rompía porque el orden del índice es por caja, fecha, 
      //apertura y encontraba y ya no seguía con los demás registros
      Si lFecha < pFechaIni o lFecha > pFechaFin         
         tAperCajas.BUSCA SIGUIENTE[1]  
         Continua
      FinSi
      //Fin Si
      //Fin N.D.5980 

      tAgentes.BUSCA[ @STR(tAperCajas(cidagente);0) ]
      Si pCajeroIni != ' '
         Si tAgentes->Encontro
            Si tAgentes(ccodigoagente) < pCajeroIni O tAgentes(ccodigoagente) > pCajeroFin
               tAperCajas.BUSCA SIGUIENTE[1]
               Continua
            FinSi
         FinSi
      FinSi 

      Si lFecha >= pFechaIni Y tAperCajas(cfacturada) = 1
         tDocumentos.BUSCA[ @STR(tAperCajas(ciddocum01);0) ]

         Texto 'Caja: ' & tCajas(ccodigoc01) & ' ' & tCajas(cnombrec01)
         Imprime
         Texto 'Fecha y Hora de Apertura: ' & tAperCajas(cfechoraap)
         Imprime
         Texto 'Cajero: ' & tAgentes(ccodigoagente) & ' ' & tAgentes(cnombreagente)
         Imprime
         Texto 'Factura:   Serie: ' & tDocumentos(cseriedocumento) & ' Folio: ' & tDocumentos(cfolio)
         Imprime         

         Texto '@L{-1}'
         Imprime
         NEGRITAS TRUE 
         Lista '','^Del','^Al','"Al 15%','"Al 10%','"Al 0%','"Exento','"Otros%','"IVA Otros%','"Total'
         NEGRITAS FALSE
         Texto '@L{-1}'         
         Imprime

         lNVDel = ''
         lNVAl = ''
         Ventas = 0
         Totales = ''
         LinImp = ''
         MIENTRAS[ tPagosNV.BUSCA[ @STR(tAperCajas(cidapertur);0)]; tPagosNV->Encontro; tPagosNV.BUSCA SIGUIENTE[1] ]
          Si tPagosNV(ciddocum01) > 0 
            tDocumentos.BUSCA[ @STR(tPagosNV(ciddocum01);0) ]
            Si tDocumentos->Encontro               
               Si tDocumentos(ccancelado) = 1 O tPagosNV(ciddocum03) != 0
                  Si @LEN(lNVDel) > 0
                     Linea = ''
                     Linea = 'Notas de Venta:'[C0]
                     Linea = @COL(lNVDel;0)[C1]  
                     Linea = @COL(lNVAl;0)[C2]  
                     Linea = @COL(Ventas;0)[C3]
                     Linea = @COL(Ventas;1)[C4]
                     Linea = @COL(Ventas;2)[C5]
                     Linea = @COL(Ventas;3)[C6]
                     Linea = @COL(Ventas;4)[C7]
                     Linea = @COL(Ventas;5)[C8]
                     Linea = @COL(Ventas;0) + @COL(Ventas;1) + @COL(Ventas;2) + @COL(Ventas;3) + @COL(Ventas;4) + @COL(Ventas;5)[C9]  
                     Imprime Linea

                     Totales = @COL(Totales;3) + @COL(Ventas;0)[C3]
                     Totales = @COL(Totales;4) + @COL(Ventas;1)[C4]
                     Totales = @COL(Totales;5) + @COL(Ventas;2)[C5]
                     Totales = @COL(Totales;6) + @COL(Ventas;3)[C6]
                     Totales = @COL(Totales;7) + @COL(Ventas;4)[C7]
                     Totales = @COL(Totales;8) + @COL(Ventas;5)[C8]
                     Totales = @COL(Totales;9) + @COL(Linea;9)[C9]
                  FinSi
                  lNVDel = ''
                  lNVAl = ''             
                  Ventas = 0 
               SiNo
                  Si @LEN(lNVDel) = 0 
                     lNVDel = '"' & tDocumentos(cseriedocumento) & ' ' & @STR(tDocumentos(cfolio);0)[C0]
                  FinSi
                  MIENTRAS[ tMovimientos.BUSCA[ @STR(tPagosNV(ciddocum01);0)]; tMovimientos->Encontro; tMovimientos.BUSCA SIGUIENTE[1] ] 
                     Si tParametros(cnumimpu01) = 1
                        lImpuestos = tMovimientos(cporcent01)[C0]  
                        lImpuestos = tMovimientos(cimpuesto1)[C1]  
                        lImpuestos = tMovimientos(cporcent02)[C2]  
                        lImpuestos = tMovimientos(cimpuesto2)[C3]  
                        lImpuestos = tMovimientos(cporcent03)[C4]  
                        lImpuestos = tMovimientos(cimpuesto3)[C5]   
                     SiNo
                        Si tParametros(cnumimpu01) = 2
                           lImpuestos = tMovimientos(cporcent02)[C0]  
                           lImpuestos = tMovimientos(cimpuesto2)[C1]  
                           lImpuestos = tMovimientos(cporcent01)[C2]  
                           lImpuestos = tMovimientos(cimpuesto1)[C3]  
                           lImpuestos = tMovimientos(cporcent03)[C4]  
                           lImpuestos = tMovimientos(cimpuesto3)[C5]   
                        SiNo
                           lImpuestos = tMovimientos(cporcent03)[C0]  
                           lImpuestos = tMovimientos(cimpuesto3)[C1]  
                           lImpuestos = tMovimientos(cporcent01)[C2]  
                           lImpuestos = tMovimientos(cimpuesto1)[C3]  
                           lImpuestos = tMovimientos(cporcent02)[C4]  
                           lImpuestos = tMovimientos(cimpuesto2)[C5]   
                        FinSi 
                     FinSi 

                     lAplImpOtro = False
                     lBaseImpuesto = tMovimientos(cneto) - (tMovimientos(cdescuen01) + tMovimientos(cdescuen02) + tMovimientos(cdescuen03) + tMovimientos(cdescuen04) + tMovimientos(cdescuen05))[C0]

                     Si @COL(lImpuestos;0) = 15
                        Ventas = @COL(Ventas;0) + @COL(lBaseImpuesto;0)[C0]
                     SiNo  
                        Si @COL(lImpuestos;0) = 10
                           Ventas = @COL(Ventas;1) + @COL(lBaseImpuesto;0)[C1]
                        SiNo  
                           Si @COL(lImpuestos;0) = 0
                              tProducto.BUSCA[ @STR(tMovimientos(cidprodu01);0) ]
                              Si tProducto(cesexento) = 1
                                 Ventas = @COL(Ventas;3) + @COL(lBaseImpuesto;0)[C3]
                              SiNo
                                 Ventas = @COL(Ventas;2) + @COL(lBaseImpuesto;0)[C2]
                              FinSi 
                           SiNo  
                              Ventas = @COL(Ventas;4) + @COL(lBaseImpuesto;0)[C4]
                              Ventas = @COL(Ventas;5) + @COL(lImpuestos;1)[C5]
                              lAplImpOtro = True
                           FinSi
                        FinSi
                     FinSi

                     Si @COL(lImpuestos;3) != 0
                        Si !lAplImpOtro 
                           Ventas = @COL(Ventas;4) + @COL(lBaseImpuesto;0)[C4]
                           lAplImpOtro = True
                        FinSi 
                        Ventas = @COL(Ventas;5) + @COL(lImpuestos;3)[C5]
                     FinSi

                     Si @COL(lImpuestos;5) != 0
                        Si !lAplImpOtro 
                           Ventas = @COL(Ventas;4) + @COL(lBaseImpuesto;0)[C4]
                           lAplImpOtro = True
                        FinSi 
                        Ventas = @COL(Ventas;5) + @COL(lImpuestos;5)[C5]
                     FinSi

                  FINMIENTRAS
                  lNVAl = '"' & tDocumentos(cseriedocumento) & ' ' & @STR(tDocumentos(cfolio);0)[C0]
               FinSi                
            FINSI
          FinSi
         FINMIENTRAS
         Si @LEN(lNVDel) > 0
            Linea = ''
            Linea = 'Notas de Venta:'[C0]
            Linea = @COL(lNVDel;0)[C1]  
            Linea = @COL(lNVAl;0)[C2]  
            Linea = @COL(Ventas;0)[C3]
            Linea = @COL(Ventas;1)[C4]
            Linea = @COL(Ventas;2)[C5]
            Linea = @COL(Ventas;3)[C6]
            Linea = @COL(Ventas;4)[C7]
            Linea = @COL(Ventas;5)[C8]
            Linea = @COL(Ventas;0) + @COL(Ventas;1) + @COL(Ventas;2) + @COL(Ventas;3) + @COL(Ventas;4) + @COL(Ventas;5)[C9]  
            Imprime Linea

            Totales = @COL(Totales;3) + @COL(Ventas;0)[C3]
            Totales = @COL(Totales;4) + @COL(Ventas;1)[C4]
            Totales = @COL(Totales;5) + @COL(Ventas;2)[C5]
            Totales = @COL(Totales;6) + @COL(Ventas;3)[C6]
            Totales = @COL(Totales;7) + @COL(Ventas;4)[C7]
            Totales = @COL(Totales;8) + @COL(Ventas;5)[C8]
            Totales = @COL(Totales;9) + @COL(Linea;9)[C9]
         FinSi
         
         Texto '@L{3,4,5,6,7,8,9}'
         Imprime
         Totales = 'Totales:'[C2]
         Imprime Totales
         Totales = 0  

         SALTALIN 2
      FinSi


      tAperCajas.BUSCA SIGUIENTE[1]	       
   FINMIENTRAS
FINMIENTRAS


