// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// Reporte:     Reporte de Aperturas de Cajas Con Corte 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 con Corte desglosa los tickets que conforman la apertura y
//              los importes por porcentaje de impuesto.
//
// Consideraciones :
// Creación  :  Roberto Del Alto Torres.  3/Junio/2003
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// Historia de modificaciones
//  Fecha      Nombre   IDLotus                     Descripcion
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// 08/01/2009  ELVS     5596       ERROR NO MUESTRA LAS NOTAS DE VENTA DEL 2008 EN EL REPORTE NOTAS 
//                                 DE VENTA POR CORTE UNICAMENTE LAS 2009.                                  
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

// INICIO PARAMETROS
Parametro pCajaIni = 'CAJA1'
Parametro pCajaFin = 'CAJA1'
Parametro pFechaIni = '20040101'
Parametro pFechaFin = '20040131'

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 por Corte'
    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] ]
   
   //Formato de Fecha mes/día/año y en string
   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
		  
      //Formato de Fecha año/mes/día
      //0123456789 posiciones en la cadena
      //01/01/2010 13:22:09:262    		  
      lFecha = @SUBSTR(tAperCajas(cfechoraap);6;4) & @SUBSTR(tAperCajas(cfechoraap);0;2) & @SUBSTR(tAperCajas(cfechoraap);3;2)                
      
      //Formato de fecha de pFechaFin año/mes/día
      //Lista pFechaFin
			
      //N.D.5596 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.5596

      tAgentes.BUSCA[ @STR(tAperCajas(cidagente);0) ]

      Si lFecha >= pFechaIni Y tAperCajas(cestadoape) = 1

         Texto 'Caja: ' & tCajas(ccodigoc01) & ' ' & tCajas(cnombrec01)
         Imprime
         Texto 'Fecha y Hora de Apertura: ' & tAperCajas(cfechoraap)
         Imprime
         Texto 'Cajero: ' & tAgentes(ccodigoagente) & ' ' & tAgentes(cnombreagente)
         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
         lNVDelDN = ''
         lNVAlDN = ''
         VentasDN = 0
         Totales = ''
         lTipo = 0 // 0 = Notas de Venta, 1 = Devoluciones de Notas de Venta
         MIENTRAS lTipo < 2
            MIENTRAS[ tPagosNV.BUSCA[ @STR(tAperCajas(cidapertur);0)]; tPagosNV->Encontro; tPagosNV.BUSCA SIGUIENTE[1] ]  

                bEntra = False
    	        Si lTipo = 0 Y tPagosNV(ciddocum01) > 0
                   tDocumentos.BUSCA[ @STR(tPagosNV(ciddocum01);0) ]
                   bEntra = tDocumentos->Encontro
                FinSi
    	        Si lTipo = 1 Y tPagosNV(ciddocum02) > 0
                   tDocumentos.BUSCA[ @STR(tPagosNV(ciddocum02);0) ]
                   bEntra = tDocumentos->Encontro
                FinSi

                Si bEntra         
   	          Si tDocumentos(ccancelado) = 1 
      	            Si @LEN(lNVDel) > 0 O @LEN(lNVDelDN) > 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]  
			   Ventas = @COL(Linea;9)[C9]
	                   Imprime Linea
		        FinSi
			Si @LEN(lNVDelDN) > 0
	         	   Linea = ''
	            	   Linea = 'Devs. Not. Vta.:'[C0]
   	            	   Linea = @COL(lNVDelDN;0)[C1]  
      	            	   Linea = @COL(lNVAlDN;0)[C2]  
         	           Linea = @COL(VentasDN;0)[C3]
	         	   Linea = @COL(VentasDN;1)[C4]
   	         	   Linea = @COL(VentasDN;2)[C5]
      	         	   Linea = @COL(VentasDN;3)[C6]
         	           Linea = @COL(VentasDN;4)[C7]
            	           Linea = @COL(VentasDN;5)[C8]
	               	   Linea = @COL(VentasDN;0) + @COL(VentasDN;1) + @COL(VentasDN;2) + @COL(VentasDN;3) + @COL(VentasDN;4) + @COL(VentasDN;5)[C9]  
			   VentasDN = @COL(Linea;9)[C9]
	                   Imprime Linea
			FinSi
								
	                Totales = @COL(Totales;3) + @COL(Ventas;0) - @COL(VentasDN;0)[C3]
   	                Totales = @COL(Totales;4) + @COL(Ventas;1) - @COL(VentasDN;1)[C4]
      	                Totales = @COL(Totales;5) + @COL(Ventas;2) - @COL(VentasDN;2)[C5]
         	        Totales = @COL(Totales;6) + @COL(Ventas;3) - @COL(VentasDN;3)[C6]
            	        Totales = @COL(Totales;7) + @COL(Ventas;4) - @COL(VentasDN;4)[C7]
               	        Totales = @COL(Totales;8) + @COL(Ventas;5) - @COL(VentasDN;5)[C8]
                  	Totales = @COL(Totales;9) + @COL(Ventas;9) - @COL(VentasDN;9)[C9]
	              FinSi
   	              lNVDel = ''
      	              lNVAl = ''             
         	      Ventas = 0 
		      lNVDelDN = ''
		      lNVAlDN = ''
		      VentasDN = 0
            	   SiNo
		      Si lTipo = 0
               	   	Si @LEN(lNVDel) = 0 
                  	   lNVDel = '"' & tDocumentos(cseriedocumento) & ' ' & @STR(tDocumentos(cfolio);0)[C0]
		        FinSi
			tMovimientos.BUSCA[ @STR(tPagosNV(ciddocum01);0)]
		      SiNo
               	   	Si @LEN(lNVDelDN) = 0 
                  	   lNVDelDN = '"' & tDocumentos(cseriedocumento) & ' ' & @STR(tDocumentos(cfolio);0)[C0]
		        FinSi
			tMovimientos.BUSCA[ @STR(tPagosNV(ciddocum02);0)]
		      FinSi
   	              MIENTRAS tMovimientos->Encontro 
      	                 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 lTipo = 0
		           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
								SiNo
                         Si @COL(lImpuestos;0) = 15
   		            VentasDN = @COL(VentasDN;0) + @COL(lBaseImpuesto;0)[C0]
      		         SiNo  
         		    Si @COL(lImpuestos;0) = 10
            		       VentasDN = @COL(VentasDN;1) + @COL(lBaseImpuesto;0)[C1]
               		    SiNo  
                  	       Si @COL(lImpuestos;0) = 0
                     	          tProducto.BUSCA[ @STR(tMovimientos(cidprodu01);0) ]
                                  Si tProducto(cesexento) = 1
                                     VentasDN = @COL(VentasDN;3) + @COL(lBaseImpuesto;0)[C3]
                              	  SiNo
                                     VentasDN = @COL(VentasDN;2) + @COL(lBaseImpuesto;0)[C2]
                                  FinSi 
	                       SiNo  
      		                  VentasDN = @COL(VentasDN;4) + @COL(lBaseImpuesto;0)[C4]
         	                  VentasDN = @COL(VentasDN;5) + @COL(lImpuestos;1)[C5]
            		          lAplImpOtro = True
               		       FinSi
                            FinSi
                    	 FinSi
									
                         Si @COL(lImpuestos;3) != 0
   		            Si !lAplImpOtro 
      		               VentasDN = @COL(VentasDN;4) + @COL(lBaseImpuesto;0)[C4]
         		       lAplImpOtro = True
            		    FinSi 
               		    VentasDN = @COL(VentasDN;5) + @COL(lImpuestos;3)[C5]
                  	 FinSi
									
	                 Si @COL(lImpuestos;5) != 0
   	                    Si !lAplImpOtro 
      	                       VentasDN = @COL(VentasDN;4) + @COL(lBaseImpuesto;0)[C4]
	         	       lAplImpOtro = True
   	         	    FinSi 
      	         	    Ventas = @COL(Ventas;5) + @COL(lImpuestos;5)[C5]
         	         FinSi
		      FinSi
								
		      tMovimientos.BUSCA SIGUIENTE[1]
                   FINMIENTRAS

		   Si lTipo = 0
	       	      lNVAl = '"' & tDocumentos(cseriedocumento) & ' ' & @STR(tDocumentos(cfolio);0)[C0]
		   SiNo
	              lNVAlDN = '"' & tDocumentos(cseriedocumento) & ' ' & @STR(tDocumentos(cfolio);0)[C0]
		   FinSi
                FinSi                
             FinSi

          FINMIENTRAS

          lTipo = lTipo + 1
       FINMIENTRAS


       Si @LEN(lNVDel) > 0 O @LEN(lNVDelDN) > 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]  
             Ventas = @COL(Linea;9)[C9]
	     Imprime Linea
	  FinSi

          Si @LEN(lNVDelDN) > 0
             Linea = ''
             Linea = 'Devs. Not. Vta.:'[C0]
   	     Linea = @COL(lNVDelDN;0)[C1]  
      	     Linea = @COL(lNVAlDN;0)[C2]  
             Linea = @COL(VentasDN;0)[C3]
             Linea = @COL(VentasDN;1)[C4]
	     Linea = @COL(VentasDN;2)[C5]
   	     Linea = @COL(VentasDN;3)[C6]
      	     Linea = @COL(VentasDN;4)[C7]
             Linea = @COL(VentasDN;5)[C8]
             Linea = @COL(VentasDN;0) + @COL(VentasDN;1) + @COL(VentasDN;2) + @COL(VentasDN;3) + @COL(VentasDN;4) + @COL(VentasDN;5)[C9]  
             VentasDN = @COL(Linea;9)[C9]
	     Imprime Linea
	  FinSi
				
          Totales = @COL(Totales;3) + @COL(Ventas;0) - @COL(VentasDN;0)[C3]
          Totales = @COL(Totales;4) + @COL(Ventas;1) - @COL(VentasDN;1)[C4]
          Totales = @COL(Totales;5) + @COL(Ventas;2) - @COL(VentasDN;2)[C5]
          Totales = @COL(Totales;6) + @COL(Ventas;3) - @COL(VentasDN;3)[C6]
          Totales = @COL(Totales;7) + @COL(Ventas;4) - @COL(VentasDN;4)[C7]
          Totales = @COL(Totales;8) + @COL(Ventas;5) - @COL(VentasDN;5)[C8]
          Totales = @COL(Totales;9) + @COL(Ventas;9) - @COL(VentasDN;9)[C9]
       FinSi
         
       Texto '@L{3,4,5,6,7,8,9}'
       Imprime
       Totales = 'Totales:'[C2]
       Imprime Totales
       Totales = 0  

       //lNVDel = ''
       //lNVAl = ''             
       //Ventas = 0 
       //lNVDelDN = ''
       //lNVAlDN = ''
       //VentasDN = 0

       SALTALIN 2
     FinSi

     tAperCajas.BUSCA SIGUIENTE[1]	       
   FINMIENTRAS
FINMIENTRAS


