// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// Reporte:            Polizas y Documentos Asociados
//
//
// Sistema:     ADMINPAQ  Versión v1.0 Windows
//
// Descripcion: 
//  
//
// Consideraciones :
// Creación  :  Luis Palau Castañeda.  12/septiembre/2001
// Revisiones : 
// 21/01/2003  N.D.1726     Presenta prepólizas con estado de error. (DRdA)
// 05/06/2006  N.D.4089     Mostrar la hora de la póliza de AdminPaq en el 
//                          reporte (ELVS)
// 21/06/2006  N.D.4089	    Se reabre el defecto, porque solo se debe mostrar
//			    la hora cuando la empresa usa CFDs
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// INCLUSION DE ARCHIVOS
      Incluye LibAdminPaq.rpt


// INICIO PARAMETROS
    Parametro pFechaInicio = '20050101' 
    Parametro pFechaFin = '20051231' 
 
    Parametro pTipoPoliza = '0'       //0 todas
                                      //1 ingresos
                                      //2 egresos
                                      //3 diario
                                      //4 orden 
                                      //5 estadistica
                                      //6 Otros Tipos
 
    Parametro pTotales = 1   //1 =si     0 = no




// INICIO APERTURA TABLAS

  UsaEmpresa tEmpresa;'AdminpaqW'

   // Parametros de la empresa
  UsaTabla tParametros = tEmpresa['mgw10000']                    


  //Polizas
  UsaTabla tPolizas = tEmpresa['mgw10038']
  tPolizas.Usaindice['Fecha']  

  //tDocumentos
  UsaTabla tDocumentos = tEmpresa['mgw10008']
  tDocumentos.Usaindice['cIdPrepoliza']

  //tconceptos
  UsaTabla tConceptos = tEmpresa['mgw10006']
  tConceptos.Usaindice['']

  //Monedas
  UsaTabla tMonedas = tEmpresa['mgw10034']          
  tMonedas.Usaindice['']                     // Usa el índice primario, por cIdMoneda


//!  tParametros.Busca Primero   
// Lee el registro de parámetros de la empresa para obtener el directorio de trabajo de ContPAQ
gDirContPAQ = ''
tParametros.Busca Primero
Si tParametros->Encontro // Si lo encontró
  gDirContPAQ = tParametros(cRutaContPAQ)
FinSi

Si gDirContPAQ != ''
  UsaEmpresa tEmpContPAQ;'CONTPAQW';gDirContPAQ
  UsaTabla tDiario = tEmpContPAQ['CTW10009/IDIARIO']              // Catálogo de diarios: Tipo Póliza
FinSi
//DEFINICION DE COLUMNAS 

  // N.D. 4089 se modificaron las columnas para la visualización correcta de los datos y agregar el campo fecha
  // Columnas 20;1.65,0.15,1.2,0.15,1.5,0.15,3.3,0.15,1.8,0.15,1.8,0.15,2.4,0.15,2.4,0.3,2.4,0
  Columnas 20;5.15,0.15,1.6,0.15,1.5,0.15,3.3,0.15,1.4,0.15,1.4,0.15,2.2,0.15,2.2,0.3,2.0,0

  UsaLetra 'Arial'
  Altura 9 

//VARIABLES GLOBALES 
  
  gDelaFecha = ''
  gAlaFecha  = ''
  gRenglon = '' 

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


  gDelaFecha = @str(pMes;0) 
  Mientras @len(gDelaFecha)<2
     gDelaFecha   = '0' & gDelaFecha 
  FinMientras
  gDelaFecha = @str(pEjercicio;0) &   gDelaFecha & '02'
//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}' & ' Pólizas y Documentos Asociados'
    Imprime
    gDelaFecha = fEditaFecha(pFechaInicio) 
    gAlaFecha = fEditaFecha(pFechaFin) 
    Texto '^@TC{0,0,0}@S{16}'& 'Del: ' &  gDelaFecha  & ' al ' &  gAlaFecha



    Texto '"@TC{0,0,0}@S{8}Hora: ' & @Hora()
    Imprime

    
    

    NEGRITAS TRUE
    Altura 10


    Texto '@TC{0,0,0}@L{-1}'
	 Imprime 

    // N.D. 4089 se modificaron las columnas para la visualización correcta de los datos y agregar el campo fecha
    // Columnas 20;1.65,0.15,1.2,0.15,1.5,0.15,3.3,0.15,1.8,0.15,1.8,0.15,2.4,0.15,2.4,0.3,2.4,0
    Columnas 20;5.15,0.15,1.6,0.15,1.5,0.15,3.3,0.15,1.4,0.15,1.4,0.15,2.2,0.15,2.2,0.3,2.0,0
    //N.D. 4089 Se agrega la hora pero solo aplica para empresas que usen CFDs
    Si tParametros(cEsCFD)=1 
	Texto c0; 'Fecha y Hora' // N.D. 4089 Se agrega el campo hora
    SiNo
	Texto c0; 'Fecha'
    FinSi
    Texto c2; 'Tipo Pól'
    Texto c4; 'Número'
    Texto c6; 'Tipo Documento'
    Texto c8; 'Serie'
    Texto c10; 'Folio'
    Texto c12; '"Subtotal'
    Texto c14; '"Total Impuesto'
    Texto c16; '"Total'
    Imprime
    Texto '@TC{0,0,0}@L{-1}'
	 Imprime 

  
    NEGRITAS FALSE
    Altura 10
  FinEncab

//PRINCIPAL <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//  21/Ene/2003 N.D.1726 Se agregó el filtro para brincarse la prepólizas con
//                       estado de error. (DRdA)
// *****************************************************************************
  gRenglon = '' 
  
  tPolizas.busca Primero
  Mientras tPolizas->encontro
    Si tPolizas(cEstadoContable) = 0
      tPolizas.Saltareg[1]
      Continua
    FinSi

    Si tPolizas(fecha)< @col(pFechaInicio;0)
      tPolizas.Saltareg[1]
      Continua
    Finsi
    Si tPolizas(fecha)> @col(pFechaFin;0)
       Finciclo
    Finsi

    //N.D. 4089 Se agrega la hora pero solo aplica para empresas que usen CFDs
    Si tParametros(cEsCFD)=1
	gRenglon = fEditaFecha(tPolizas(fecha)) & ' ' &tPolizas(cHora)[c0]
    SiNo
	gRenglon = fEditaFecha(tPolizas(fecha))
    FinSi

    Si  @col(pTipoPoliza;0)!=0
      Si @col(pTipoPoliza;0) = 6 Y tPolizas(tipoPol) < @col(pTipoPoliza;0)
         tPolizas.Saltareg[1]
         Continua
      FinSi
      Si @col(pTipoPoliza;0) < 6 Y tPolizas(tipoPol) != @col(pTipoPoliza;0)
         tPolizas.Saltareg[1]
         Continua
      Finsi
    Finsi

    // Tipo de póliza
    Escoge tPolizas(TipoPol)
      Caso 1 // Ingresos
        gRenglon = 'Ingreso'[C2]
      FinCaso
      Caso 2 // Egresos
        gRenglon = 'Egreso'[C2]
      FinCaso
      Caso 3 // Diario
        gRenglon = 'Diario'[C2]
      FinCaso
      Caso 4 // Orden
        gRenglon = 'Orden'[C2]
      FinCaso
      Caso 5 // Estadística
        gRenglon = 'Estadística'[C2]
      FinCaso
      OtroCaso
        gRenglon = @STR(tPolizas(TipoPol);0)[C2]
        
        Si gDirContPAQ != ''
          Si tDiario(Numero) = tPolizas(TipoPol)
            gRenglon = tDiario(Descrip)[C2]
          SiNo
            tDiario.Busca[tPolizas(TipoPol) $ 3]
            Si tDiario->Encontro
              gRenglon = tDiario(Descrip)[C2]
            FinSi
          FinSi
        FinSi
      FinCaso
    FinEscoge

    gRenglon =@STR(tPolizas(NumPol);0)[c4]

    tDocumentos.busca[@str(tPolizas(cIdPrepoliza);0)]
    lTotal =''
    Si tDocumentos->encontro 
      Mientras tDocumentos->encontro
        Si tDocumentos(cIdPrepoliza)!=  tPolizas(cIdPrepoliza)
          finciclo
        Finsi


        tConceptos.busca[@str(tDocumentos(cIdConceptoDocumento);0)]        
        Si tConceptos->encontro 
          gRenglon =tConceptos(cCodigoConcepto) & '  '& tConceptos(cNombreConcepto)[c6]
        Finsi
        gRenglon =tDocumentos(cSerieDocumento) [c8] 
        gRenglon =@str(tDocumentos(cFolio);0) [c10]

        tMonedas.Busca[@Str(tDocumentos(cIdMoneda);0)]
        Si tDocumentos->encontro 
          gDecimales = tMonedas(cDecimalesMoneda)
          [C12,C14,C16].Decimales gDecimales
        FInsi
        gRenglon =tDocumentos(cNeto) [c12] 
        gRenglon =tDocumentos(cImpuesto1) +tDocumentos(cImpuesto2) + tDocumentos(cImpuesto3)[c14] 
        gRenglon =' '& tMonedas(cSimboloMoneda) [c15] 
        gRenglon =tDocumentos(cTotal) [c16] 

        Imprime gRenglon 

        Si pTotales =1 
          lTotal =@col(lTotal;12) + @col(gRenglon;12)[c12] 
          lTotal =@col(lTotal;14) + @col(gRenglon;14)[c14] 
          lTotal =' '& tMonedas(cSimboloMoneda) [c15] 
          lTotal =@col(lTotal;16) + @col(gRenglon;16)[c16] 
        Finsi
        gRenglon =''
        tDocumentos.Saltareg[1]
      FinMientras
      Si pTotales =1 
        lTotal =' Total'[c6] 
        Subrayacol '-'
        Imprime ltotal
      FInsi
    Sino

      gRenglon ='Póliza sin documento asociado'[c6]
      Imprime gRenglon
    Finsi  
  
  

    gRenglon =''
    tPolizas.Saltareg[1]
  FinMientras
