// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// Reporte:     Catalogo de empresas
//              Definiciones
//              Configuracion gral 
//              
//              
//
//
// Sistema:     ADMINPAQ  Versión v1.0 Windows
//
// Descripcion: 
// 
//
//
//
// Consideraciones :
// Creación  :  Luis Palau Castañeda.  12/septiembre/2001
// Revisiones : 
// N.D. 3701 Error de ortografia Cantiades por Cantidades
// N.D. 3917 Error de ortografia exisen por Existen (AMG)
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// INCLUSION DE ARCHIVOS
      Incluye LibAdminPaq.rpt


// INICIO PARAMETROS
   Parametro  pTipoReporte  = '1,2,3' //1=Catalogo de empresas   2=Definiciones   3=Configuracion_gral 

    

// INICIO APERTURA TABLAS

  UsaEmpresa tEmpresa;'AdminpaqW'
//!  UsaEmpresa tEmpresa2;'';tEmpresa->SysDirDatos
  UsaEmpresa tEmpresa2;'AdminpaqW';tEmpresa->SysDirDatos
   //tabla global
  UsaTabla tEmpresas = tEmpresa2['mgw00001']                    
  tEmpresas.Usaindice['cNombreEmpresa']   

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

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

   // directorio
  UsaTabla tDirectorios = tEmpresa['mgw10011']                    
  tDirectorios.Usaindice['cTipoCatalogo']                   
//!  tDirectorios.Usaindice['iCatTipoCatTipoDir']                   

   //Almacenes
  UsaTabla tAlmacenes = tEmpresa['mgw10003']                    
  tAlmacenes.Usaindice[''] 

   //Clientes
  UsaTabla tClientes = tEmpresa['mgw10002']                    
  tClientes.Usaindice[''] 

  tParametros.Busca Primero   
  tEmpresas.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
//***********************************************************************************************
//	fTraeMoneda
// Descripcion: Esta función recibe el id de la moneda
// Entradas : 
// Salida :   
// Autor :     FBCS junio 2001
//***********************************************************************************************
DefFunc fTraeMoneda(aId)
local lregreso
  tMonedas.Busca[@Str(aId;0)]
  Si tMonedas->encontro
    lregreso = tMonedas(cNombreMoneda)
  finsi
   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}' & ' Parámetros de la Empresa'

    Texto '"@TC{0,0,0}@S{8}Hora: ' & @Hora()
    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 
  

    Altura 10
  FinEncab

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

  Si @pos(@col(pTipoReporte;0);'1') != -1
    texto ' '
    imprime
    Texto '^@TC{0,0,0}@S{12}' & ' Datos de la Empresa'
    imprime
    Texto '@TC{0,0,0}@L{-1}'
	 Imprime 
    Altura 10
    gRenglon = '' 
    negritas true
    texto 'DATOS GENERALES'
    Imprime 
    negritas false
    texto 'Nombre:  ' &  tParametros(cNombreEmpresa)
    Imprime 
    texto 'R.F.C.:  ' &  fMascarilla(tParametros(cRFCEmpresa);tParametros(cMascarillaRFC))
    Imprime 
    texto 'C.U.R.P.:  ' &  fMascarilla(tParametros(cCURPEmpresa);tParametros(cMascarillaCURP))
    Imprime 
    texto 'Registro Camara:  ' &  tParametros(cRegistroCamara)
    Imprime 
    texto 'Cuenta Estatal:  ' &  tParametros(cCuentaEstatal)
    Imprime 
    texto 'Representante Legal:  ' &  tParametros(cRepresentanteLegal)
    Imprime 
    texto ' '
    Imprime 
    texto ' '
    Imprime 
    negritas true
    texto 'RUTA DE ARCHIVOS'
    Imprime 
    negritas false
    tEmpresas.busca[tparametros(cNombreEmpresa)]
    Si tEmpresas->encontro
      texto 'De la Empresa:  ' & tEmpresas(cRutaDatos)
      Imprime 
      texto 'De Respaldo:  ' &  tEmpresas(cRutaRespaldos)
    SiNo
      texto 'De la Empresa:  ' & tEmpresa->SysDirDatos
      Imprime 
      texto 'De Respaldo:  ' &  tEmpresa->SysDirDatos
    Finsi
    Imprime 
    texto 'De la Empresa ContPAQ:  ' &  tParametros(cRutaContpaq)
    Imprime 
    texto ' '
    Imprime 
    texto ' '
    Imprime 
    negritas true
    texto 'DOMICILIO'
    Imprime 
    negritas false
//!    tDirectorios.busca[@str(tEmpresas(cIdEmpresa);0)&':4:1']
    tDirectorios.busca['4']
    Si tDirectorios->encontro
      texto 'Calle:  '& tDirectorios(cNombreCalle)
      Imprime 
      texto 'Num Ext:  ' & tDirectorios(cNumeroExterior)
      Imprime 
      texto 'Num Int:  '& tDirectorios(cNumeroInterior)
      Imprime 
      texto 'Colonia:   '& tDirectorios(cColonia)
      Imprime 
      texto 'Código Postal:   '& tDirectorios(cCodigoPostal)
      Imprime 
      texto 'Telefono 1:   '& tDirectorios(cTelefono1)
      Imprime 
      texto 'Telefono 2:   '& tDirectorios(cTelefono2)
      Imprime
      texto 'Telefono 3:   '& tDirectorios(cTelefono3)
      Imprime
      texto 'Telefono 4:   '& tDirectorios(cTelefono4)
      Imprime
      vcont = 0[c0]
      vtemporal = @str(tDirectorios(cEmail);0)[c0]
      vtemporal2 = ''
      Mientras @col(vcont;0) < @len(@str(@col(vtemporal;0);0))
        Si  @substr(@col(vtemporal;0);@col(vcont;0);1) = '@'
//!          vtemporal2 = @col(vtemporal2;0) & ''
          vtemporal2 = @col(vtemporal2;0) & ' @ '
        Sino
          vtemporal2 = @col(vtemporal2;0) & @substr(@col(vtemporal;0);@col(vcont;0);1)
        Finsi
        vcont=@col(vcont;0) +1[c0]
      Finmientras
      texto 'Dirección Correo Electrónico:   '&  @col(vtemporal2;0)
      Imprime 
      texto 'WEB:   '& tDirectorios(cDireccionWEB)
      Imprime 
      texto 'Ciudad:   '& tDirectorios(cCiudad)
      Imprime 
      texto 'Estado:   '& tDirectorios(cEstado)
      Imprime 
      texto 'País:   '& tDirectorios(cPais)
      Imprime 
    Sino
      texto 'No existen datos de la empresa'
      Imprime 
    Finsi    
  Finsi

  Si @pos(@col(pTipoReporte;0);'2') != -1
    texto ' '
    imprime
    Texto '^@TC{0,0,0}@S{12}' & ' Definiciones'
    imprime
    Texto '@TC{0,0,0}@L{-1}'
	  Imprime 
    Altura 10
    negritas true
    texto 'DEFINICION DE PRECIOS'
    Imprime 
    negritas false
    texto c0;'Nombre Precio'
    texto c2;'Moneda'
    Imprime 
    Texto '@TC{0,0,0}@L{-1}'
    Imprime 
    texto c0;'1.-  ' & tParametros(cNombreLista1)
    texto c2;fTraeMoneda(tParametros(cIdMonedaLista1))
    Imprime 
    texto c0;'2.-  ' &tParametros(cNombreLista2)
    texto c2;fTraeMoneda(tParametros(cIdMonedaLista2))
    Imprime 
    texto c0;'3.-  ' & tParametros(cNombreLista3)
    texto c2;fTraeMoneda(tParametros(cIdMonedaLista3))
    Imprime 
    texto c0;'4.-  ' & tParametros(cNombreLista4)
    texto c2;fTraeMoneda(tParametros(cIdMonedaLista4))
    Imprime 
    texto c0;'5.-  ' & tParametros(cNombreLista5)
    texto c2;fTraeMoneda(tParametros(cIdMonedaLista5))
    Imprime 
    texto c0;'6.-  ' & tParametros(cNombreLista6)
    texto c2;fTraeMoneda(tParametros(cIdMonedaLista6))
    Imprime 
    texto c0;'7.-  ' & tParametros(cNombreLista7)
    texto c2;fTraeMoneda(tParametros(cIdMonedaLista7))
    Imprime 
    texto c0;'8.-  ' & tParametros(cNombreLista8)
    texto c2;fTraeMoneda(tParametros(cIdMonedaLista8))
    Imprime 
    texto c0;'9.-  ' & tParametros(cNombreLista9)
    texto c2;fTraeMoneda(tParametros(cIdMonedaLista9))
    Imprime 
    texto c0;'10.- ' & tParametros(cNombreLista10)
    texto c2;fTraeMoneda(tParametros(cIdMonedaLista10))
    Imprime 
    texto ' '
    Imprime 
    texto ' '
    Imprime 
    negritas true
    texto 'DEFINICION DE DESCUENTOS'
    Imprime 
    negritas false
    texto 'Documentos:'
    Imprime 
    texto c0;'1.-  ' & tParametros(cNombreDescuentoDoc1)
    Imprime 
    texto c0;'2.-  ' & tParametros(cNombreDescuentoDoc2)
    Imprime 
    texto 'Movimientos:'
    Imprime 
    texto c0;'1.-  ' & tParametros(cNombreDescuentoMov1)
    Imprime 
    texto c0;'2.-  ' & tParametros(cNombreDescuentoMov2)
    Imprime 
    texto c0;'3.-  ' & tParametros(cNombreDescuentoMov3)
    Imprime 
    texto c0;'4.-  ' & tParametros(cNombreDescuentoMov4)
    Imprime 
    texto c0;'5.-  ' & tParametros(cNombreDescuentoMov5)
    Imprime 
    texto ' '
    Imprime 
    texto ' '
    Imprime 
    negritas true
    texto 'DEFINICION DE IMPUESTOS'
    Imprime 
    negritas false
    texto 'Impuestos:'
    Imprime 
    texto c0;'1.-  ' & tParametros(cNombreImpuesto1)
    Imprime 
    texto c0;'2.-  ' & tParametros(cNombreImpuesto2)
    Imprime 
    texto c0;'3.-  ' & tParametros(cNombreImpuesto3)
    Imprime 
    texto 'Retenciones:'
    Imprime 
    texto c0;'1.-  ' & tParametros(cNombreRetencion1)
    Imprime 
    texto c0;'2.-  ' & tParametros(cNombreRetencion2)
    Imprime 
    texto ' '
    Imprime 
    texto ' '
    Imprime 
    negritas true
    texto 'DEFINICION DE GASTO SOBRE COMPRA'
    Imprime 
    negritas false
    texto c0;'1.-  ' & tParametros(cNombreGasto1)
    Imprime 
    texto c0;'2.-  ' & tParametros(cNombreGasto2)
    Imprime 
    texto c0;'3.-  ' & tParametros(cNombreGasto3)
    Imprime 
    texto ' '
    Imprime 
    texto ' '
    Imprime 
  Finsi
  
  Si @pos(@col(pTipoReporte;0);'3') != -1
    texto ' '
    imprime
    Texto '^@TC{0,0,0}@S{12}' & ' Configuración General' 
    imprime
    Texto '@TC{0,0,0}@L{-1}'
	  Imprime 
    Altura 10
    negritas true
    texto 'NUMERO DE DECIMALES'
    Imprime 
    negritas false
    texto 'Cantidades:  ' & tparametros(cDecimalesUnidades)
    Imprime 
    texto 'Tipo de cambios:  ' & tparametros(cDecimalesTiposCambio)
    Imprime 
    texto 'Precios de venta:  ' & tparametros(cDecimalesPrecioVenta)
    Imprime 
    texto 'Costo y precios de compra:  ' & tparametros(cDecimalesCostos)
    Imprime 
    texto ' '
    Imprime 
    texto ' '
    Imprime 
    negritas true
    texto 'MASCARILLA'
    Imprime 
    negritas false
    texto ' Código del Cliente/proveedor:   ' & tparametros(cMascarillaClientes)
    Imprime 
    texto ' Código del Producto:   ' & tparametros(cMascarillaProducto)
    Imprime 
    texto ' Código del Agente:   ' & tparametros(cMascarillaAgente)
    Imprime 
    texto ' Código del Almacén:   ' & tparametros(cMascarillaAlmacen)
    Imprime 
    texto ' R.F.C.:   ' &  tparametros(cMascarillaRFC)
    Imprime 
    texto ' C.U.R.P.:   ' &  tparametros(cMascarillaCURP)
    Imprime 
    texto ' '
    Imprime 
    texto ' '
    Imprime 
    negritas true
    texto 'ALMACENES'
    Imprime 
    negritas false
    //Si tparametros(cExistenciaNegativa) = 0
    //  texto 'Maneja Existencias Negativas: NO'
    //Sino
    //  texto 'Maneja Existencias Negativas: SI'
    //Finsi
    //Imprime 
    texto 'Almacén asumido en la captura:'
    Imprime 
    tAlmacenes.busca[@str(tparametros(cIdAlmacenAsumido);0)]
    Si tAlmacenes->encontro
      texto '  Código :  ' & tAlmacenes(cCodigoAlmacen)
      Imprime 
      texto '  Nombre :  ' & tAlmacenes(cNombreAlmacen)
      Imprime 
    Finsi
    texto 'Almacén asumido para el manejo de consignación a clientes:'
    Imprime 
    tAlmacenes.busca[@str(tparametros(cIdAlmacenConsignacion);0)]
    Si tAlmacenes->encontro
      texto '  Código :  ' & tAlmacenes(cCodigoAlmacen)
      Imprime 
      texto '  Nombre :  ' & tAlmacenes(cNombreAlmacen)
      Imprime 
    Finsi
    texto ' '
    Imprime 
    texto ' '
    Imprime 
    negritas true
    texto 'Clientes'
    Imprime 
    negritas false
    texto 'VENTAS: Cuando el Precio esté por debajo del Margen de Utilidad,'
    Imprime 
    Si tparametros(cBanMargenUtilidad) = 1
      texto 'el Sistema lo ajustará automáticamente: SI'
    Sino
      texto 'el Sistema lo ajustará automáticamente: NO'
    Finsi
    Imprime 
    texto 'Cliente Mostrador: '
    Imprime 
    tClientes.busca[@str(tparametros(cIdClienteMostrador);0)]
    Si tAlmacenes->encontro
      texto '  Código :  ' & tClientes(cCodigoCliente)
      Imprime 
      texto '  Nombre :  ' & tClientes(cRazonSocial)
      Imprime 
    Finsi
    texto ' '
    Imprime 
    texto ' '
    Imprime 
    negritas true
    texto 'Condiciones Comerciales'
    Imprime 
    negritas false
    //texto 'Descuento por documento :   ' & @str(tParametros(cDescuentoDocto);2) & ' %'
    //Imprime 
    texto 'Descuento por Movimiento :   ' & @str(tParametros(cDescuentoMovto);2) & ' %'
    Imprime 
    texto ' '
    Imprime 
    texto ' '
    Imprime 
    negritas true
    texto 'Comisiones'
    Imprime 
    negritas false
    texto 'De venta :   ' & @str(tParametros(cComisionVenta);2) & ' %'
    Imprime 
    texto 'De Cobro :   ' & @str(tParametros(cComisionCobro);2) & ' %'
    Imprime 
    texto ' '
    Imprime 
    texto ' '
    Imprime 
    negritas true
    texto 'IMPUESTOS Y RETENCIONES'
    Imprime 
    negritas false
    texto 'Impuestos:'
    Imprime 
    texto c0;'1.-  ' & tParametros(cNombreImpuesto1) 
    texto c2; '"'& @str(tParametros(cImpuesto1);2) &  ' %'
    Imprime 
    texto c0;'2.-  ' & tParametros(cNombreImpuesto2)
    texto c2; '"'& @str(tParametros(cImpuesto2);2) &  ' %'
    Imprime 
    texto c0;'3.-  ' & tParametros(cNombreImpuesto3)
    texto c2; '"'& @str(tParametros(cImpuesto3);2) &  ' %'
    Imprime 
    texto 'Retenciones:'
    Imprime 
    texto c0;'1.-  ' & tParametros(cNombreRetencion1)
    texto c2; '"'& @str(tParametros(cRetencionCliente1);2) &  ' %'
    Imprime 
    texto c0;'2.-  ' & tParametros(cNombreRetencion2)
    texto c2; '"'& @str(tParametros(cRetencionCliente2);2) &  ' %'
    Imprime 
    // N.D.3923 Informar del manejo de CFD´s
    texto ' '
    Imprime 
    texto ' '
    Imprime 
    Negritas True
    texto 'F@C'
    Imprime 
    Negritas False
    Si tParametros(cEsCFD) = 1
      Texto 'La empresa maneja Comprobantes Fiscales Digitales'
    Sino
      Texto 'La empresa no maneja Comprobantes Fiscales Digitales'
    FinSi
    Imprime
  Finsi
