// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// Reporte:     Reporte de Notas de Venta con desglose de Formas de Pago
//
// Sistema:     ADMINPAQ  Versión v2.0 Windows
//
// Descripcion: Revisa las aperturas de cajas con corte del módulo de Punto de Venta y aquellas 
//              que esten facturadas desglosa las Notas de Venta que conforman la apertura
//              los importes por forma de pago.
//
// 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 = '20030601'
Parametro pFechaFin = '20030630'
Parametro pCajeroIni = ' '
Parametro pCajeroFin = 'z'

Columnas 13;1.3, 1.6

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 9

//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 Forma de Pago'
    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] ]
   
   tAperCajas.BUSCA[ tCajas(cidcaja) & ':' & pFechaIni ]
   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.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 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(cestadoape) = 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 '@L{-1}'
         Imprime
         NEGRITAS TRUE 
         Lista '','"Total Nota','"Efectivo','"Efectivo','"Tipo de','','"T. C.','"T. C.','"T. C.','',''
         Lista 'Folio','"de Venta','"M.N.','"M.E.','"Cambio','"Cheques','"VISA','"MasterCard','"Am. Ex.','"Vales','"Otras','"Cambio','"Total'
         NEGRITAS FALSE
         Texto '@L{-1}'         
         Imprime

         Totales = ''
         MIENTRAS[ tPagosNV.BUSCA[ @STR(tAperCajas(cidapertur);0)]; tPagosNV->Encontro; tPagosNV.BUSCA SIGUIENTE[1] ]
            tDocumentos.BUSCA[ @STR(tPagosNV(ciddocum01);0) ]
            Si tDocumentos->Encontro               
               Si tDocumentos(ccancelado) != 1 

                  Linea = ''
                  Linea = tDocumentos(cseriedocumento) & ' ' & tDocumentos(cfolio)[C0]
                  Linea = tDocumentos(ctotal)[C1]
                  Linea = tPagosNV(ccobefecmn)[C2]
                  Linea = tPagosNV(ccobefecme)[C3]
                  Linea = tPagosNV(ctipcambio)[C4]
                  Linea = tPagosNV(ccobcheque)[C5]
                  Linea = tPagosNV(ccobtcvisa)[C6]
                  Linea = tPagosNV(ccobtcmscr)[C7]
                  Linea = tPagosNV(ccobtcamex)[C8]
                  Linea = tPagosNV(ccobvales)[C9]
                  Linea = tPagosNV(ccobotros)[C10]
                  Linea = tPagosNV(ccambio)[C11]
                  Linea = tPagosNV(ccobefecmn) + tPagosNV(ccobcheque) + tPagosNV(ccobtcvisa) + tPagosNV(ccobtcmscr) + tPagosNV(ccobtcamex) + tPagosNV(ccobvales) + tPagosNV(ccobotros) - tPagosNV(ccambio)[C12]
                  Imprime Linea

                  Totales = Totales + Linea[C1..C12]
               FinSi                
            FINSI
         FINMIENTRAS

         Texto '@L{1,2,3,4,5,6,7,8,9,10,11,12}'
         Imprime
         Totales = 'Totales'[C0] 
         Imprime Totales 
      FinSi

      SALTALIN 2

      tAperCajas.BUSCA SIGUIENTE[1]	       
   FINMIENTRAS
FINMIENTRAS


