// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// Reporte:       clasificaciones
//                Unidad de medida y peso
//                caracteristicas
//                catalogo de monedas.
//              
//              
//              
//
//
// Sistema:     ADMINPAQ  Versión v1.0 Windows
//
// Descripcion: 
// 
//
//
//
// Consideraciones :
// Creación  :  Luis Palau Castañeda.  12/septiembre/2001
// Revisiones : 
//
// 12/02/2007   ND 4446   El reporte de unidades de medida y peso no presenta decimales. (AMG)
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// INCLUSION DE ARCHIVOS
      Incluye LibAdminPaq.rpt


// INICIO PARAMETROS

  Parametro pTabla  = '1,2,3,4'//             1   clasificaciones
                               //             2   Unidad de medida y peso
                               //             3   caracteristicas
                               //             4   catalogo de monedas.

  Parametro pIdMonedaTipocambio = 0   //cuando es cero se ignora el parmetro
                                      //<> de cero se depliega los tiposde cambio de dicha moneda  
// INICIO APERTURA TABLAS

  UsaEmpresa tEmpresa;'AdminpaqW'

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


  //unidades peso y med
  UsaTabla tUnidadesPM = tEmpresa['mgw10026']
  tUnidadesPM.Usaindice['cNombreUnidad']
  //EquivalenciasUnidades peso y med
  UsaTabla tEquivaleUnidadesPM = tEmpresa['mgw10027']
  tEquivaleUnidadesPM.Usaindice['']
  UsaTabla tUnidadesPM1 = tEmpresa['mgw10026'] Alias 'tUnit1'
  tUnidadesPM1.Usaindice['']


  //monedas
  UsaTabla tMonedas = tEmpresa['mgw10034']          
  tMonedas.Usaindice['cNombreMoneda']                     // Usa el índice primario, por cIdMoneda
  //Tipos de cambio
  UsaTabla tTipoCambio = tEmpresa['mgw10035']          
  tTipoCambio.Usaindice['iMonedaFecha']


  //Carcteristicas
  UsaTabla tCarcteristicas = tEmpresa['mgw10021']
  tCarcteristicas.Usaindice['cNombreCaracteristica']
  //Carcteristicas2
  UsaTabla tCarcteristicas2 = tEmpresa['mgw10022']
  tCarcteristicas2.Usaindice['iPadreValor']


  //Clasificaciones
  UsaTabla tClasificaciones = tEmpresa['mgw10019']
  tClasificaciones.Usaindice['']
  //Clasificaciones2
  UsaTabla tClasificaciones2 = tEmpresa['mgw10020']
  tClasificaciones2.Usaindice['iClasifValorClasif']


  tParametros.Busca Primero   

//DEFINICION DE COLUMNAS 

  Columnas 20;2.7,0.15,5.55,0.15,1.5,0.15,0.9,0.15, 0,0 ,1.65,0.15,1.65,0.15,2.25,1.15,1.05,0.15,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{8}Moneda: '& gNombreMoneda
    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}' & 'Tablas de la Empresa'



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

    
    
    Altura 10
  FinEncab

//PRINCIPAL <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 Si @pos(@col(pTabla;0);'1') != -1
  Texto ' '
  Imprime 
  Texto '^@TC{0,0,0}@S{12}' & ' Listado de Clasificaciones'
  Imprime
  //Abreviatura              Elementos
  Columnas 20;2.7,0.15,5.55,0.15,4.35,0.15,1.65,0.15,2.25,1.15,1.05,0.15,0
  Texto '@TC{0,0,0}@L{-1}'
  Imprime 
  
  Texto C2;'Abreviatura'
  Texto C4;'Elementos'
  Imprime   
  Texto '@TC{0,0,0}@L{-1}'
  Imprime 



  lcontador = 1
  gRenglon = '' 
  tClasificaciones.busca primero
  Mientras tClasificaciones->encontro

    Si tClasificaciones(cIdClasificacion)=31
       tClasificaciones.saltareg[1]
       continua
    Finsi

    negritas true
    Si lcontador <=6
       //agente
       gRenglon = 'Agente'[c0]
    Finsi    
    Si lcontador >6 y lcontador <=12
       //cliente
       gRenglon = 'Cliente'[c0]
    Finsi    
    Si lcontador >12 y lcontador <=18
       //prov
       gRenglon = 'Proveedor'[c0]
    Finsi    
    Si lcontador >18 y lcontador <=24
      //almacen
       gRenglon = 'Almacen'[c0]
    Finsi    
    Si lcontador >24 y lcontador <=30
      //producto
       gRenglon = 'Producto'[c0]
    Finsi    
    Si lcontador >30
       gRenglon = 'Otras Clasif.'[c0]
    Finsi
    texto @col(gRenglon;0) & '   ' & tClasificaciones(cNombreclasificacion)
    Imprime 
    gRenglon = ''
    negritas false


    tClasificaciones2.busca[@str(tClasificaciones(cIdClasificacion);0)]
    Mientras tClasificaciones2->encontro


      si tClasificaciones2(cIdClasificacion)!=tClasificaciones(cIdClasificacion)
        finciclo
      Finsi
      gRenglon  = tClasificaciones2(cValorClasificacion)[c4]
      gRenglon  = tClasificaciones2(cCodigoValorClasificacion)[c2]
      Imprime gRenglon
      gRenglon = ''
      tClasificaciones2.saltareg[1]
    FinMientras
 
    Texto ' '
    imprime
   

    lcontador = lcontador +1
    tClasificaciones.saltareg[1]
  Finmientras
 Finsi
 



 Si @pos(@col(pTabla;0);'2') != -1
  Texto ' '
  Imprime 
  //Abreviatura              Elementos
  Texto '^@TC{0,0,0}@S{12}' & ' Listado de Unidades de Medida y Peso'
  Imprime
  Columnas 20;2.7,0.15,5.55,0.15,4.35,0.15,1.65,0.15,2.25,1.15,1.05,0.15,0
  Texto '@TC{0,0,0}@L{-1}'
  Imprime 
  
  Texto C2;'Factor'
  Texto C4;'Unidades'
  Imprime   
  Texto '@TC{0,0,0}@L{-1}'
  Imprime 

  gRenglon = '' 
  tUnidadesPM.busca primero
  Mientras tUnidadesPM->encontro

    Si tUnidadesPM(cidUnidad)=0
      tUnidadesPM.saltareg[1]
      continua
    Finsi


    negritas true
    texto 'Nombre: ' & tUnidadesPM(cNombreUnidad)
    Imprime 
    texto 'Abreviatura captura: ' & tUnidadesPM(cAbreviatura)
    Imprime 
    texto 'Abreviatura despliegue y reportes: ' & tUnidadesPM(cDespliegue)
    Imprime 

    gRenglon = ''
    negritas false


    tEquivaleUnidadesPM.busca[@str(tUnidadesPM(cIdUnidad);0)]
    Mientras tEquivaleUnidadesPM->encontro
      si tEquivaleUnidadesPM(cIdUnidad1)!=tUnidadesPM(cIdUnidad)
        finciclo
      Finsi

      // gRenglon  = '          ' & tEquivaleUnidadesPM(cFactorConversion)[c2]   

      // ND 4446 Verificar si la unidad tiene o no decimales para enviarlos imprimir al
      // reporte.    

      lNumero = @fraccion(tEquivaleUnidadesPM(cFactorConversion))      


      Si  lNumero = 0
          gRenglon  = '          ' & @str(tEquivaleUnidadesPM(cFactorConversion);0)[c2] 
      Sino
          gRenglon  = '          ' & @str(tEquivaleUnidadesPM(cFactorConversion);4)[c2] 
      Finsi
      
      tUnidadesPM1.busca[@str(tEquivaleUnidadesPM(cIdUnidad2);0)] 
      Si tUnidadesPM1->encontro
        gRenglon  = tUnidadesPM1(cNombreUnidad)& ' ' & tUnidadesPM(cDespliegue) [c4]         
      Finsi
      Imprime gRenglon
      gRenglon = ''
      tEquivaleUnidadesPM.saltareg[1]
    FinMientras
 
    Texto ' '
    imprime
  

    tUnidadesPM.saltareg[1]
  Finmientras
 Finsi





 Si @pos(@col(pTabla;0);'3') != -1
  Texto ' '
  Imprime 

  Texto '^@TC{0,0,0}@S{12}' & ' Listado de Características'
  Imprime
  //Abreviatura              Elementos
  Columnas 20;2.7,0.15,5.55,0.15,4.35,0.15,1.65,0.15,2.25,1.15,1.05,0.15,0
  Texto '@TC{0,0,0}@L{-1}'
  Imprime 
  Texto C2;'Abreviatura'
  Texto C4;'Valor'
  Imprime   
  Texto '@TC{0,0,0}@L{-1}'
  Imprime 

  gRenglon = '' 
  tCarcteristicas.busca primero
  Mientras tCarcteristicas->encontro


    Si tCarcteristicas(cidpadreCaracteristica)=0
      tCarcteristicas.saltareg[1]
      continua
    Finsi


    negritas true
    texto 'Nombre: ' &  tCarcteristicas(cNombreCaracteristica)
    Imprime 
    gRenglon = ''
    negritas false


    tCarcteristicas2.busca[@str(tCarcteristicas(cIdPadreCaracteristica);0)]
    Mientras tCarcteristicas2->encontro
      si tCarcteristicas2(cIdPadreCaracteristica)!=tCarcteristicas(cIdPadreCaracteristica)
        finciclo
      Finsi
      gRenglon  = tCarcteristicas2(cValorCaracteristica)[c4]
      gRenglon  = tCarcteristicas2(cNemoCaracteristica)[c2]
      Imprime gRenglon
      gRenglon = ''
      tCarcteristicas2.saltareg[1]
    FinMientras
 
    Texto ' '
    imprime
   

    tCarcteristicas.saltareg[1]
  Finmientras
 Finsi 


 Si @pos(@col(pTabla;0);'4') != -1
  Texto ' '
  Imprime 

  Texto '^@TC{0,0,0}@S{12}' & ' Listado de Monedas y Tipos de Cambio'
  Imprime
  //Abreviatura              Elementos
  Columnas 20;2.7,0.15,5.55,0.15,4.35,0.15,1.65,0.15,2.25,1.15,1.05,0.15,0

  Texto '@TC{0,0,0}@L{-1}'
  Imprime 
  
  Texto C2;'Fecha'
  Texto C4;'Tipo de Cambio'
  Imprime   
  Texto '@TC{0,0,0}@L{-1}'
  Imprime 

  gRenglon = '' 
  tMonedas.busca primero
  Mientras tMonedas->encontro
    //si es <>0 se filtra por el id..
    //si es = 0 seimprimen todos 
    Si @col(pIdMonedaTipocambio;0) != 0 
      Si @col(pIdMonedaTipocambio;0) !=tMonedas(cIdMoneda)
        tMonedas.saltareg[1]
        continua 
      Finsi
    Finsi

    negritas true
    texto 'Moneda: ' &  tMonedas(cNombreMoneda)
    Imprime 
    Si tMonedas(cPosicionSimbolo) = 0
      texto 'Simbolo: ' &  tMonedas(cSimboloMoneda) &'       Posicion: Antes de la cantidad' 
    Sino
      texto 'Simbolo: ' &  tMonedas(cSimboloMoneda) &'       Posicion: Despues de la cantidad' 
    Finsi
    Imprime
    texto 'Decimales: ' &  tMonedas(cDecimalesMoneda)
    Imprime 
    texto 'Nombre Singular: ' &  tMonedas(cSingular)
    Imprime 
    texto 'Nombre Plural: ' &  tMonedas(cPlural)
    Imprime 
    texto 'Texto cantidad protegida: ' &  tMonedas(cDescripcionProtegida)
    Imprime 


    gRenglon = ''
    negritas false

		// N.D.352 INICIO
		// Ajustar el número de decimales de la columna de tipos de cambio al numero de decimales
		// de tipos de cambio de la configuración general de la empresa
		[C4].DECIMALES tParametros(cDecimalesTiposCambio)
		// N.D.352 FIN

    tTipoCambio.busca[@str(tMonedas(cIdMoneda);0)]
    Mientras tTipoCambio->encontro
      si tTipoCambio(cIdMoneda)!=tMonedas(cIdMoneda)
        finciclo
      Finsi
      gRenglon  = tTipoCambio(cImporte)[c4]
      gRenglon  = fEditaFecha(tTipoCambio(cFecha))[c2]
      Imprime gRenglon
      gRenglon = ''
      tTipoCambio.saltareg[1]
    FinMientras
 
    Texto ' '
    imprime
   

    tMonedas.saltareg[1]
  Finmientras
 Finsi

