// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// Reporte:     Resumen de operaciones de venta por producto
//              Resumen de operaciones de compra por producto
//
// Sistema:     ADMINPAQ  Versión v1.0 Windows
//
// Descripcion: 
//
// Consideraciones :
// Creación  :  Luis Palau Castañeda.  22/Agosto/2001
// Revisiones : 
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// Historia de modificaciones
//  Fecha      Nombre   IDLotus                     Descripcion
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// 17/05/2007   JAAM    N.C.147     Esquema de adicion de unidades de compra y venta  
// 23/05/2007		ELVS		N.C.146			Se agrega documento modelo cotización del proveedor.	 	
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

// *************************************************************************************************
// INCLUSION DE ARCHIVOS
// *************************************************************************************************
   Incluye LibAdminPaq.rpt

// *************************************************************************************************
// INICIO PARAMETROS
// *************************************************************************************************
    Parametro pEjercicio        = 2003
    Parametro pMes              = 5     //enero,feb,...oct, nov,dic
    Parametro pProductoInicial  = '(Ninguno)' 
    Parametro pProductoFinal    = 'z'
    Parametro pUnidad           = 0	  // 0 = Unidad Base·	1 = Unidad No Equivalente·	2 = Seleccionar Unidad
                                      // 3 = Unidad de Compra  4 = Unidad de Venta 
    Parametro pIdUnidad         = 1   // base de datos de unidades (id)
    Parametro pIdMoneda         = 1   // 1 = ID moneda Peso mexicano    
    Parametro pTipoReporte      = 1   // 1,2   ventas, compras, 

// *************************************************************************************************
// INICIO APERTURA TABLAS
// *************************************************************************************************
  UsaEmpresa tEmpresa;'AdminpaqW'

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

  // Productos
  UsaTabla tProductos = tEmpresa['mgw10005']
  tProductos.Usaindice['iCodigoTipo']

  //Acumulados
  UsaTabla tAcumulados = tEmpresa['mgw10018']
  tAcumulados.Usaindice['iAcumImpteOwnerEjerMoneda']

  //unidades peso y med
  UsaTabla tUnidadesPM = tEmpresa['mgw10026']
  tUnidadesPM.Usaindice['']

  //EquivalenciasUnidades peso y med
  UsaTabla tEquivaleUnidadesPM = tEmpresa['mgw10027']
  tEquivaleUnidadesPM.Usaindice['']

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

  //Tipos de cambio
  UsaTabla tTipoCambio = tEmpresa['mgw10035']          
  tTipoCambio.Usaindice['iMonedaFecha']

  UsaTabla tEjercicioPeriodo = tEmpresa['mgw10031']          
  tEjercicioPeriodo.Usaindice['']                     

// *************************************************************************************************
  tParametros.Busca Primero   
  // Esta función se debe ejecutar antes del cuerpo del reporte, para inicializar algunas valores
  // Globales para la biblioteca LibAdminPAQ.rpt
  tEjercicioPeriodo.Usaindice['cNumeroEjercicio']                     
  fIniFechasHistoria(tEjercicioPeriodo)
  tEjercicioPeriodo.Usaindice['']                     

// *************************************************************************************************
//DEFINICION DE COLUMNAS 
// *************************************************************************************************
  Columnas 20;2.4,0.15,5.85,0.15,0.75,0.15,2.25,0.15,2.25,0.15,2.25,0.15,2.25,0.15,0,0,0
  UsaLetra 'Arial'
  Altura 9 
  [C0..C5].Decimales 0
  [C0..C5].Blanco ' '
  tMonedas.Busca[@str(pIdMoneda;0)]
  gDecimales = tMonedas(cDecimalesMoneda)
  Si pTipoReporte = 1
    [C6..C14].Coma
    [C6..C14].Decimales tParametros(cDecimalesUnidades) // Decimales para unidades
    [C6..C14].Blanco '0.00'
    [c4,c5,c7,c9,c11,c13,c15..c19].Blanco ' '
  Sino
    [C6..C10].Coma
    [C6..C10].Decimales tParametros(cDecimalesUnidades) // Decimales para unidades
    [C6..C10].Blanco '0.00'
    [C11..C14].Decimales 0
    [c4,c5,c7,c9,c11..c19].Blanco ' '
  Finsi

// *************************************************************************************************
//VARIABLES GLOBALES 
// *************************************************************************************************
  gDelaFecha = ''
  gAlaFecha  = ''
  gRenglon = '' 
  gTotalGral = ''
  gTotalPaquetes = ''
  gUnidad = pUnidad
  gIdUnidad = pIdUnidad
  vTipoAcumulado = 0
  vImporteModelo  =  0
  vIdEjercicio = 0
  vAcumuladoCotizacion = 0  
  vAcumuladoRemision = 0
  vAcumuladoPedido = 0
  vAcumuladoFacturacion = 0
  vAcumuladoOrdenCompra = 0
  vAcumuladoConsignacion = 0
  vAcumuladoCompra = 0
	vAcumuladoCotizacionProv = 0 //N.C.146

  gNombreMoneda = tMonedas(cNombreMoneda)
 
  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 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// *************************************************************************************************
// =================================================================================================
// Función área sensible al contexto
// =================================================================================================
DefFunc ContextoDetalleProducto(aNumeroColumna; aValor)
Local lIdDoctoModelo
    Si pTipoReporte = 1 
      Si aNumeroColumna = 6
        lIdDoctoModelo = 1    // Cotizaciones
      FinSi
      Si aNumeroColumna = 8
        lIdDoctoModelo = 2    // Pedidos
      FinSi
      Si aNumeroColumna = 10
        lIdDoctoModelo = 3    // Remisiones
      FinSi
      Si aNumeroColumna = 12
        lIdDoctoModelo = 4    // Facturación
      FinSi
    sino
      Si aNumeroColumna = 6   
        lIdDoctoModelo = 38    // N.C.146 Cotización del Proveedor
      FinSi
      Si aNumeroColumna = 8
        lIdDoctoModelo = 17    // Ordenes de Compra
      FinSi
      Si aNumeroColumna = 10
        lIdDoctoModelo = 18    // Consignaciones
      FinSi
      Si aNumeroColumna = 12
        lIdDoctoModelo = 19    // Compras
      FinSi
    finsi 
    EJECUTA tEmpresa->SysDirDatos & '\Reportes\AdminPAQ\ResProd.RTW';pEjercicio,pMes,@Escoge(aValor;0),@Escoge(aValor;0),@Escoge(aValor;1),@Escoge(aValor;2),pIdMoneda,pTipoReporte,'','',lIdDoctoModelo;tEmpresa->Directorio
FinFunc

// *************************************************************************************************
// 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

// *************************************************************************************************
// Descripcion: imprime los totales generales de las variables gTotalGral
// Entradas :  
// Salida :    
// *************************************************************************************************
DefFunc  fTotalGral()
  local LTotalLinea
  LTotalLinea = '==========================='[c0]

  Si pTipoReporte = 1
    Texto c6; @col(LTotalLinea;0)
    Texto c8; @col(LTotalLinea;0)
    Texto c10; @col(LTotalLinea;0)
    Texto c12; @col(LTotalLinea;0)
    Texto c14; @col(LTotalLinea;0)
  sino 
    Texto c6; @col(LTotalLinea;0)
    Texto c8; @col(LTotalLinea;0)
    Texto c10; @col(LTotalLinea;0)
    Texto c12; @col(LTotalLinea;0)
    Texto c14; @col(LTotalLinea;0)
  finsi
  imprime
  gTotalGral  ='' [c0..c4]
  gTotalGral[2] = 'Total Productos'
  imprime gTotalGral

  // Impresion del Total de Paquetes. Solo aplica para ventas
  Si pTipoReporte = 1
    Si (@Col(gTotalPaquetes;6) > 0) O (@Col(gTotalPaquetes;8) > 0) O (@Col(gTotalPaquetes;10) > 0) O (@Col(gTotalPaquetes;12) > 0)
      gTotalPaquetes = ''[c0..c4]
      gTotalPaquetes[2] = 'Total Cantidad de Paquetes'
      Imprime gTotalPaquetes
    FinSi
  FinSi
Finfunc

// *************************************************************************************************
// Descripcion: imprime los totales  de las variable gRenglon y suma los totales 
// Entradas :  
// Salida :    
// *************************************************************************************************
DefFunc fRenglon(atProductos:TABLA; aTipoProducto)

  DEFREGION ContextoDetalleProducto
  Si @col(gRenglon;6) != 0
    [C6].REGIONINFO atProductos(cCodigoProducto) & ',' & pUnidad & ',' & pIdUnidad
  FinSi
  Si @col(gRenglon;8) != 0
    [C8].REGIONINFO atProductos(cCodigoProducto) & ',' & pUnidad & ',' & pIdUnidad
  FinSi
  Si @col(gRenglon;10) != 0
    [C10].REGIONINFO atProductos(cCodigoProducto) & ',' & pUnidad & ',' & pIdUnidad
  FinSi
  //Si pTipoReporte = 1
    Si @col(gRenglon;12) != 0
      [C12].REGIONINFO atProductos(cCodigoProducto) & ',' & pUnidad & ',' & pIdUnidad
    FinSi
  //FinSi
  imprime gRenglon
  // Adición de un total por paquete. Solo aplica para ventas
  Si aTipoProducto = 2
    gTotalPaquetes = gTotalPaquetes + gRenglon
  Sino
    gTotalGral  = gTotalGral + gRenglon
  FinSi
  gRenglon = '' 
Finfunc

// *************************************************************************************************
// Descripcion: despues de buscar en acumulados se extrae el campo 1..12 de acumulados
// Entradas :   mes en formato numerico
// Salida :    importe del acumulado
// *************************************************************************************************
DefFunc fAcumulados(aMes) 
Local lRegreso
  Escoge   aMes
    caso 1
      lRegreso = tAcumulados(cImportePeriodo1)
    fincaso
    caso 2
      lRegreso = tAcumulados(cImportePeriodo2)
    fincaso
    caso 3
      lRegreso = tAcumulados(cImportePeriodo3)
    fincaso
    caso 4
      lRegreso = tAcumulados(cImportePeriodo4)
    fincaso
    caso 5
      lRegreso = tAcumulados(cImportePeriodo5)
    fincaso
    caso 6
      lRegreso = tAcumulados(cImportePeriodo6)
    fincaso
    caso 7
      lRegreso = tAcumulados(cImportePeriodo7)
    fincaso
    caso 8
      lRegreso = tAcumulados(cImportePeriodo8)
    fincaso
    caso 9
      lRegreso = tAcumulados(cImportePeriodo9)
    fincaso
    caso 10
      lRegreso = tAcumulados(cImportePeriodo10)
    fincaso
    caso 11
      lRegreso = tAcumulados(cImportePeriodo11)
    fincaso
    caso 12
      lRegreso = tAcumulados(cImportePeriodo12)
    fincaso
  FinEscoge
  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
    Si pTipoReporte = 1
      Texto '^@TC{0,0,0}@S{16}' & ' Resumen de Operaciones de Venta por Producto'
    Sino
      Texto '^@TC{0,0,0}@S{16}' & ' Resumen de Operaciones de Compra por Producto'
    Finsi
    Texto '"@TC{0,0,0}@S{8}Hora: ' & @Hora()
    Imprime

    Texto '^@TC{0,0,0}@S{16}'& 'Periodo: ' & @substr(fEditaFecha(gDelaFecha) ;3;20)
    Imprime 
    NEGRITAS TRUE
    Altura 10

    //Código         Nombre(Producto)                          Cotizado      Pedido        Remisionado   Facturado         
    Columnas 20;2.4,0.15,5.85,0.15,0.75,0.15,2.25,0.15,2.25,0.15,2.25,0.15,2.25,0.15,0,0,0

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

    Texto C0;'Código'
    Texto C2;'Nombre (Producto)'
    Texto c4;'' 
    Si pTipoReporte = 1 
      Texto c6;'^Cotizado' 
      Texto c8;'^Pedido'
      Texto c10;'^Remisionado'
      Texto c12;'^Facturado'
    sino
			//N.C.146
      Texto c6;'^Cotización' 
      Texto c8;'^Orden' 
      Texto c10;'^Consignación'
      Texto c12;'^Compra'
    finsi 
    Imprime   
    Texto '@TC{0,0,0}@L{-1}'
    Imprime 
    NEGRITAS FALSE
    Altura 10
  FinEncab

// *************************************************************************************************
// PRINCIPAL <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// *************************************************************************************************
Si pTipoReporte = 1
 vAcumuladoCotizacion = 4  
  vAcumuladoRemision = 12
  vAcumuladoPedido = 8
  vAcumuladoFacturacion = 18
Sino
	//N.C.146
	vAcumuladoCotizacionProv = 147
  vAcumuladoOrdenCompra =103
  vAcumuladoConsignacion =107
  vAcumuladoCompra =113

Finsi
gRenglon = '' 
gTotalGral = ''

//buscamos el id del ejericio-mes
tEjercicioPeriodo.busca primero
Mientras tEjercicioPeriodo->encontro
 Si gDelaFecha >= tEjercicioPeriodo(cFecIniPeriodo1) y gDelaFecha <= tEjercicioPeriodo(cFechaFinal)
   vIdEjercicio = tEjercicioPeriodo(cIdEjercicio)
 Finsi
 tEjercicioPeriodo.Saltareg[1]
FinMientras



Si @str(pProductoInicial;0) = ' '
  tProductos.Busca Primero
Sino
  tProductos.Busca [@str(pProductoInicial;0) & ':']
Finsi


Mientras tProductos->Encontro
  si @str(pProductoFinal;0) != ' '
    Si tProductos(cCodigoProducto)> @str(pProductoFinal;0)
      Finciclo
    Finsi 
  finsi
  Si pTipoReporte = 2
    Si tProductos(cTipoProducto) = 2
      //si es compra y es paquete, se brinca el registro
      tProductos.Saltareg[1]                     
      continua
    Finsi
  Finsi

  // Si es uno de los servicios para facturar notas de venta no incluirlo
  Si tProductos(cIdProducto) = tParametros(cIdProdu01)
    tProductos.Saltareg[1]
    Continua
  FinSi
  Si tProductos(cIdProducto) = tParametros(cIdProdu02)
    tProductos.Saltareg[1]
    Continua
  FinSi
  Si tProductos(cIdProducto) = tParametros(cIdProdu03)
    tProductos.Saltareg[1]
    Continua
  FinSi
  Si tProductos(cIdProducto) = tParametros(cIdProdu04)
    tProductos.Saltareg[1]
    Continua
  FinSi
  Si tProductos(cIdProducto) = tParametros(cIdProdu05)
    tProductos.Saltareg[1]
    Continua
  FinSi


  //llamamos a la funcion fVerificaUnidad
  fVerificaUnidad(tProductos)
  
  //SI el Producto tiene Unidad de Medida NO Equivalente  "Y" pUnidad = 1
  Si  pUnidad = 1 y tProductos(cidUnidadNoConvertible) != 0
    vImporteModelo = 2
  Sino 
    vImporteModelo = 1
  Finsi

  //SI el reporte es de Ventas
  Si pTipoReporte = 1
    tAcumulados.Busca[ @str(vAcumuladoCotizacion;0) &':'& @col(vImporteModelo;0) &':'& @str(tProductos(cIdProducto);0) &': :'&  vIdEjercicio] 
    Si tAcumulados->encontro
      vCotizacion =fAcumulados(pMes) 
    Finsi
    tAcumulados.Busca[ @str(vAcumuladoPedido;0) &':'& @col(vImporteModelo;0) &':'& @str(tProductos(cIdProducto);0) &': :'&  vIdEjercicio] 
    Si tAcumulados->encontro
      vPedido =fAcumulados(pMes) 
    Finsi
    tAcumulados.Busca[ @str(vAcumuladoRemision;0) &':'& @col(vImporteModelo;0) &':'& @str(tProductos(cIdProducto);0) &': :'&  vIdEjercicio] 
    Si tAcumulados->encontro
      vRemision =fAcumulados(pMes) 
    Finsi
    tAcumulados.Busca[ @str(vAcumuladoFacturacion;0) &':'& @col(vImporteModelo;0) &':'& @str(tProductos(cIdProducto);0) &': :'&  vIdEjercicio] 
    Si tAcumulados->encontro
      vFactura =fAcumulados(pMes) 
    Finsi
  sino
    //SI el reporte es de Compras
		//N.C146
    tAcumulados.Busca[ @str(vAcumuladoCotizacionProv;0) &':'& @col(vImporteModelo;0) &':'& @str(tProductos(cIdProducto);0) &': :'&  vIdEjercicio] 
    Si tAcumulados->encontro
      vCotizacionProv =fAcumulados(pMes) 
    Finsi
    tAcumulados.Busca[ @str(vAcumuladoOrdenCompra;0) &':'& @col(vImporteModelo;0) &':'& @str(tProductos(cIdProducto);0) &': :'&  vIdEjercicio] 
    Si tAcumulados->encontro
      vOrdenCompra =fAcumulados(pMes) 
    Finsi
    tAcumulados.Busca[ @str(vAcumuladoConsignacion;0) &':'& @col(vImporteModelo;0) &':'& @str(tProductos(cIdProducto);0) &': :'&  vIdEjercicio] 
    Si tAcumulados->encontro
      vConsignacion =fAcumulados(pMes) 
    Finsi
    tAcumulados.Busca[ @str(vAcumuladoCompra;0) &':'& @col(vImporteModelo;0) &':'& @str(tProductos(cIdProducto);0) &': :'&  vIdEjercicio] 
    Si tAcumulados->encontro
      vCompra =fAcumulados(pMes) 
    Finsi
  finsi

  lsihubocambio =0
  //Convertir Importes en la Moneda del Reporte
  Si pUnidad = 2  Y tProductos(cidUnidadBase) != 0
    //el Producto tiene Unidad de Medida y Peso
    //	Unificar vCantidad de acuerdo a la unidad deseada en el reporte.
    //	EquivalenciaUnidadMedidayPeso.BUSCA[Productos(cIdUnidadBase)+cIdUnidad]	
    tEquivaleUnidadesPM.busca[@str(tProductos(cIdUnidadBase);0) &':'& @str(pIdUnidad;0)]
    Si tEquivaleUnidadesPM->encontro
	    //SI el reporte es de Ventas
      Si pTipoReporte = 1
	      vCotizacion = vCotizacion * tEquivaleUnidadesPM(cFactorConversion)
        vPedido = vPedido * tEquivaleUnidadesPM(cFactorConversion)
	      vRemision = vRemision * tEquivaleUnidadesPM(cFactorConversion)
	      vFactura = vFactura * tEquivaleUnidadesPM(cFactorConversion)
      sino
 		    //SI el reporte es de Compras
				//N.C.146
				vCotizacionProv = vCotizacionProv * tEquivaleUnidadesPM(cFactorConversion)
        vOrdenCompra = vOrdenCompra * tEquivaleUnidadesPM(cFactorConversion)
        vConsignacion = vConsignacion * tEquivaleUnidadesPM(cFactorConversion)
		    vCompra = vCompra * tEquivaleUnidadesPM(cFactorConversion)
	    Finsi
      lsihubocambio =1
    Finsi
  Finsi

  //Acumula Totales Generales
  gRenglon = fMascarilla(tProductos(cCodigoProducto);tParametros(cMascarillaProducto))[c0]
  gRenglon =tProductos(cNombreProducto)[c2]
  //SI el reporte es de Ventas
  Si pTipoReporte = 1
    gRenglon =@col(vCotizacion;0)[c6]  
    gRenglon =@col(vPedido;0)[c8]
    gRenglon =@col(vRemision;0)[c10]
    gRenglon =@col(vFactura;0)[c12]

    //limpiamos las variables
    vCotizacion = 0
    vPedido = 0
    vRemision = 0
    vFactura = 0
  sino
    gRenglon =@col(vCotizacionProv;0)[c6]  
    gRenglon =@col(vOrdenCompra;0)[c8]  
    gRenglon =@col(vConsignacion;0)[c10]
    gRenglon =@col(vCompra;0)[c12]

    //limpiamos las variables
    vOrdenCompra = 0
    vConsignacion = 0
    vCompra = 0
		vCotizacionProv = 0
  finsi

    //busac unidad base
    //SI el Producto tiene Unidad de Medida NO Equivalente  "Y" pUnidad = 1
    Si  pUnidad = 1 y tProductos(cidUnidadNoConvertible) != 0
      tUnidadesPM.busca[@str(tProductos(cidUnidadNoConvertible);0)]
     Sino
      Si pUnidad = 2 
        Si lsihubocambio =1
          tUnidadesPM.busca[@str(@col(pIdUnidad;0);0)]
        Sino
          tUnidadesPM.busca[@str(tProductos(cIdUnidadBase);0)]
        Finsi
      Sino
        tUnidadesPM.busca[@str(tProductos(cIdUnidadBase);0)]
      Finsi
    Finsi

    si tUnidadesPM->encontro
      gRenglon = tUnidadesPM(cDespliegue)[c4]
      Si @col(gRenglon;4)='(N)'
         gRenglon = ''[c4]
      Finsi
    finsi

    //hay importes
    Si @col(gRenglon;6)!=0 o @col(gRenglon;8)!=0 o @col(gRenglon;10) !=0 o @col(gRenglon;12) !=0      
      fRenglon(tProductos; tProductos(cTipoProducto))     
    Finsi

  tProductos.Saltareg[1]
FinMientras 
//Imprime Totales Generales
fTotalGral()

