// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// Reporte:            Listado de Almacenes. Ordenado por Código
//                     Listado de Almacenes. Ordenado por Nombre
//
//
// Sistema:     ADMINPAQ  Versión v1.0 Windows
//
// Descripcion: 
//  
//
// Consideraciones :
// Creación  :  Luis Palau Castañeda.  12/septiembre/2001
// Revisiones : 
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// INCLUSION DE ARCHIVOS
      Incluye LibAdminPaq.rpt


// INICIO PARAMETROS
    Parametro pAlmacenInicial = '(Ninguno)'
      Parametro pAlmacenFinal = 'z'

    Parametro pIdClase1 = 0 //
    Parametro pIdClase2 = 0 //
    Parametro pIdClase3 = 0 //
    Parametro pIdClase4 = 0 //
    Parametro pIdClase5 = 0 //
    Parametro pIdClase6 = 0 //



    Parametro pTipoReporte = 2  //1  Catálogos de Almacenes. Ordenado por Código
                                //2  Listado de Almacenes. Ordenado por Nombre




// INICIO APERTURA TABLAS

  UsaEmpresa tEmpresa;'AdminpaqW'

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


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


  //Clasificaciones
  UsaTabla tClasificaciones = tEmpresa['mgw10020']
  tClasificaciones.Usaindice['']


  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{22}' & tEmpresa->Nombre
    Texto '"@TC{0,0,0}@S{8}Fecha: ' & fEditaFecha(@Hoy())
    Imprime
    Si pTipoReporte = 1
      Texto '^@TC{0,0,0}@S{16}' & ' Listado de Almacenes. Ordenado por Código'
    Sino
      Si pTipoReporte = 2
        Texto '^@TC{0,0,0}@S{16}' & ' Listado de Almacenes. Ordenado por Nombre'
      Finsi
    Finsi


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

    
    

    NEGRITAS TRUE
    Altura 10
    // ===== Se Revisan las clasificaciones, para recuperarlas e imprimirlas en el encabezado
    fRevisaClases(tClasificaciones)
    // ===== Fin de la revision de clasificaciones


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

    //Código        (Almacen)
      Columnas 20;2.55,0.15,3,0.15,9,0.15,4.5,0
    Texto ''
    Texto C0;'Código'
    Texto c2;'Nombre Almacén' 
    Imprime   

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


  
    NEGRITAS FALSE
    Altura 10
  FinEncab

//PRINCIPAL <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  gRenglon = '' 
 

  si pAlmacenInicial = ' '
    tAlmacenes.Busca primero
  sino
    tAlmacenes.Busca [@str(pAlmacenInicial;0) & ':']
  finsi


  Si pTipoReporte = 2
    tAlmacenes.Usaindice['cNombreAlmacen']
    tAlmacenes.Busca primero
  Finsi




 Mientras tAlmacenes->Encontro
   si pAlmacenFinal != ' '
     Si tAlmacenes(cCodigoAlmacen)> @str(pAlmacenFinal;0)
       tAlmacenes.Saltareg[1]
       Continua
     Finsi 
   finsi
   si pAlmacenInicial != ' '
     Si tAlmacenes(cCodigoAlmacen)< @str(pAlmacenInicial;0)
       tAlmacenes.Saltareg[1]
       Continua
     Finsi 
   finsi

   Si tAlmacenes(cIdAlmacen)= 0
     tAlmacenes.Saltareg[1]
     Continua
   Finsi


  // Se Revisan las CLASIFICACIONES, solo en el caso de haber seleccionado al menos una 
   Si gNumDeClases > 0
     lQueTipo = 4
     Si !fMiembroDeUnaClase( tAlmacenes  ;gNumDeClases;gListIdDeClases;lQueTipo)
       // Sa salta el cliente actual, por no pertenecer a alguna de las clasificaciones
       tAlmacenes.Saltareg[1]
       Continua
    Finsi
   Finsi



   //Código         Nombre(Almacen)                                

   gRenglon = fMascarilla(tAlmacenes(cCodigoAlmacen);tParametros(cMascarillaAlmacen))[c0]
   gRenglon = tAlmacenes(cNombreAlmacen)[c2]
   imprime  gRenglon


   tAlmacenes.Saltareg[1]
 FinMientras
