// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< // Reporte: Catálogos de Productos, Servicios y Paquetes. Ordenado por Código // Catálogos de Productos, Servicios y Paquetes. 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 pProductoInicial = '(Ninguno)' Parametro pProductoFinal = 'z' Parametro pEstadoProducto = 0//0 = Todos 1 = Activos 2 = Inactivos Parametro pTipoProducto = 2//0=Todos 1=Productos 3=Servicios 2=Paquetes Parametro pInformacion = '1,4' // // N.D.743 F@C ALRH Se modificó el orden del último parámetro Parametro pTipoReporte = 1 //1 Precios de Compra por Proveedor //2 Precios de Compra Por Producto Parametro pIdClase1 = 0 Parametro pIdClase2 = 0 Parametro pIdClase3 = 0 Parametro pIdClase4 = 0 Parametro pIdClase5 = 0 Parametro pIdClase6 = 0 // INICIO APERTURA TABLAS UsaEmpresa tEmpresa;'CONTPAQ I Facturacion' // Parametros de la empresa UsaTabla tParametros = tEmpresa['mgw10000'] //Productos UsaTabla tProductos = tEmpresa['mgw10005'] tProductos.Usaindice['iCodigoTipo'] //Monedas UsaTabla tMonedas = tEmpresa['mgw10034'] tMonedas.Usaindice[''] // Usa el índice primario, por cIdMoneda //unidades UsaTabla tUnidadesPM = tEmpresa['mgw10026'] tUnidadesPM.Usaindice[''] //Clasificaciones UsaTabla tClasificaciones = tEmpresa['mgw10020'] tClasificaciones.Usaindice[''] //caracteristicas UsaTabla tCaracteristicas = tEmpresa['mgw10021'] tCaracteristicas.Usaindice[''] //EquivalenciasUnidades peso y med UsaTabla tEquivaleUnidadesPM = tEmpresa['mgw10027'] tEquivaleUnidadesPM.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 // [C0..C7].Decimales 0 // [C0..C7].Blanco ' ' gDecimales = 2 // [C8..C14].Coma // [C8..C14].Decimales gDecimales // [C8..C14].Blanco '0.00' // [c9,c11,c13,c15..c19].Blanco ' ' //VARIABLES GLOBALES gDelaFecha = '' gAlaFecha = '' gRenglon = '' gMoneda = '' vTipoAcumulado = 0 vImporteModelo = 0 vIdEjercicio = 0 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 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //*********************************************************************************************** // 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 //*********************************************************************************************** // fMascara() // Esta función recibe un campo numérico, que en una representación binaria de siete digitos // indica ciertos días de la semana, según el digito que esté prendido, estos pueden ser // 11111 - serie pedimento lotes caract umedida //*********************************************************************************************** Deffunc fMascara(aValor) Local lDias,lGuion // solo nos interesan los 7 bits mas a la derecha lGuion = '' lDias = '' Si aValor%2 = 1 // Un numero non = bit menos significativo encendido lDias = lGuion&'U' lGuion = ',' Finsi Si aValor%4 >= 2 // Valor Entre 1y4 = Segundo bit menos significativo encendido lDias = lDias & lGuion & 'C' lGuion = ',' Finsi Si aValor%8 >= 4 // Valor Entre 8y4 = Tercer bit menos significativo encendido lDias = lDias & lGuion & 'S' lGuion = ',' Finsi Si aValor%16 >= 8 // Valor Entre 16y8 = Cuarto bit menos significativo encendido lDias = lDias & lGuion & 'P' lGuion = ',' Finsi Si aValor%32 >= 16 lDias = lDias & lGuion & 'L' lGuion = ',' Finsi Retorna lDias FinFunc ////////////////////////////////////////////////////////////////////////////////// //ENCABEZADO Encab Texto '@TC{156;0;89}@S{8}Factura Electrónica' 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}' & ' Catálogos de Productos, Servicios y Paquetes. Ordenado por Código' Sino Si pTipoReporte = 2 Texto '^@TC{0,0,0}@S{16}' & ' Catálogos de Productos, Servicios y Paquetes. Ordenado por Nombre' Finsi Finsi Texto '"@TC{0,0,0}@S{8}Hora: ' & @Hora() Imprime // ===== Se Revisan las clasificaciones, para recuperarlas e imprimirlas en el encabezado fRevisaClases(tClasificaciones) // ===== Fin de la revision de clasificaciones NEGRITAS TRUE Altura 10 Texto '@TC{0,0,0}@L{-1}' Imprime //Código Nombre(Producto) Comisión Venta Comisión Cobro Series Pedimentos Lotes Columnas 20;2.25,0.15,6.75,0.15,2.85,0.15,2.4,0.15,1.2,0.15,1.8,0.15,0.9,0.15,0 Texto '' Texto C0;'Código' Si pTipoProducto = 1//0=Todos 1=Productos 2=Servicios 3=Paquetes Texto C2;'Nombre(Producto)' Sino Si pTipoProducto = 2 Texto C2;'Nombre(Paquete)' Sino Si pTipoProducto = 3 Texto C2;'Nombre(Servicio)' Sino Texto C2;'Nombre(Prod,Serv,Paq)' Finsi Finsi Finsi Texto c4;'Comisión Venta' Texto c6;'Comisión Cobro' Texto c8;'Series' Texto c10;'Pedimentos' Texto c12;'Lotes' Imprime Texto '@TC{0,0,0}@L{-1}' Imprime Si @pos(@col(pInformacion;0);'1') != -1 // Unidad Base Unidad NO Equiv. Característica 1 Característica 2 Característica 3 Columnas 20;2.4,0.15,3.3,0.15,3.15,0.15,2.85,0.15,2.4,0.15,3.15,1.05,0.15,0 Texto '' Texto C0;'' Texto C2;'Unidad Base' Texto c4;'Unidad NO Equiv.' Texto c6;'Característica 1' Texto c8;'Característica 2' Texto c10;'Característica 3' Imprime Texto '@TC{0,0,0}@L{-1}' Imprime Finsi Si @pos(@col(pInformacion;0);'3') != -1 // Impuesto 1 Impuesto 2 Impuesto 3 Retención 1 Retención 2 Columnas 20;2.4,0.15,3.3,0.15,3.15,0.15,2.85,0.15,2.4,0.15,3.15,1.05,0.15,0 Texto '' Texto C0;'' Texto C2;'Impuesto 1' Texto c4;'Impuesto 2' Texto c6;'Impuesto 3' Texto c8;'Retención 1' Texto c10;'Retención 2' Imprime Texto '@TC{0,0,0}@L{-1}' Imprime Finsi Si @pos(@col(pInformacion;0);'2') != -1 // Porcentaje de Margen de Utilidad Método de costeo Columnas 20;2.4,0.15,6.6,0.15,7.65,0.15 Texto '' Texto C0;'' Texto C2;'Porcentaje de Margen de Utilidad' Texto c4;'Método de Costeo' Imprime Texto '@TC{0,0,0}@L{-1}' Imprime Finsi Si @pos(@col(pInformacion;0);'4') != -1 // desdcripcion detallada Columnas 20;2.4,0.15,14.1,0.15 Texto '' Texto C0;'' Texto C2;'Descripción Detallada' Imprime Texto '@TC{0,0,0}@L{-1}' Imprime Finsi NEGRITAS FALSE Altura 10 FinEncab //PRINCIPAL <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< gRenglon = '' si pProductoInicial = ' ' tProductos.Busca primero sino tProductos.Busca [@str(pProductoInicial;0) & ':'] finsi Si pTipoReporte = 2 tProductos.Usaindice['iNombreTipo'] tProductos.Busca primero Finsi Mientras tProductos->Encontro si pProductoFinal != ' ' Si tProductos(cCodigoProducto)> @str(pProductoFinal;0) tProductos.Saltareg[1] Continua Finsi finsi si pProductoInicial != ' ' Si tProductos(cCodigoProducto)< @str(pProductoInicial;0) tProductos.Saltareg[1] Continua Finsi finsi Si tProductos(cIdProducto)= 0 tProductos.Saltareg[1] Continua Finsi Si pTipoProducto !=0 Si tProductos(cTipoProducto) != @col(pTipoProducto;0) tProductos.Saltareg[1] Continua Finsi Finsi Si pEstadoProducto = 1 // 0 = Todos 1 = Productos Activos 2 = Productos Inactivos Si tProductos(cStatusProducto)!= 1 tProductos.Saltareg[1] Continua Finsi Finsi Si pEstadoProducto = 2 // 0 = Todos 1 = Productos Activos 2 = Productos Inactivos Si tProductos(cStatusProducto)!= 0 tProductos.Saltareg[1] Continua Finsi Finsi // Se Revisan las CLASIFICACIONES, solo en el caso de haber seleccionado al menos una Si gNumDeClases > 0 lQueTipo =2 Si !fMiembroDeUnaClase( tProductos ;gNumDeClases;gListIdDeClases;lQueTipo) // Sa salta el cliente actual, por no pertenecer a alguna de las clasificaciones tProductos.Saltareg[1] Continua Finsi Finsi //Código Nombre(Producto) Comisión Venta Comisión Cobro Series Pedimentos Lotes Columnas 20;2.25,0.15,6.75,0.15,2.85,0.15,2.4,0.15,1.2,0.15,1.8,0.15,0.9,0.15,0 gRenglon = fMascarilla(tProductos(cCodigoProducto);tParametros(cMascarillaProducto))[c0] gRenglon = tProductos(cNombreProducto)[c2] gRenglon = '"'& @str(tProductos(cComVentaExcepProducto);2)&' %'[c4] gRenglon = '"'& @str(tProductos(cComCobroExcepProducto);2)&' %'[c6] Si @pos(fMascara(tProductos(cControlExistencia));'S')!=-1 gRenglon = 'Sí'[c8] Sino gRenglon = 'No'[c8] Finsi Si @pos(fMascara(tProductos(cControlExistencia));'P')!=-1 gRenglon = 'Sí'[c10] Sino gRenglon = 'No'[c10] Finsi Si @pos(fMascara(tProductos(cControlExistencia));'L')!=-1 gRenglon = 'Sí'[c12] Sino gRenglon = 'No'[c12] Finsi imprime gRenglon gRenglon = '' Si @pos(@col(pInformacion;0);'1') != -1 // Unidad Base Unidad NO Equiv. Característica 1 Característica 2 Característica 3 Columnas 20;2.4,0.15,3.3,0.15,3.15,0.15,2.85,0.15,2.4,0.15,3.15,1.05,0.15,0 tUnidadesPM.busca[@str(tProductos(cidUnidadBase);0)] Si tUnidadesPM->encontro gRenglon = tUnidadesPM(cNombreUnidad)&' '& tUnidadesPM(cDespliegue)[c2] Finsi tUnidadesPM.busca[@str(tProductos(cIdUnidadNoConvertible);0)] Si tUnidadesPM->encontro gRenglon = tUnidadesPM(cNombreUnidad)&' '& tUnidadesPM(cDespliegue)[c4] Finsi tCaracteristicas.busca[@str(tProductos(cIdPadreCaracteristica1);0)] Si tCaracteristicas->encontro gRenglon = tCaracteristicas(cNombreCaracteristica)[c6] Finsi tCaracteristicas.busca[@str(tProductos(cIdPadreCaracteristica2);0)] Si tCaracteristicas->encontro gRenglon = tCaracteristicas(cNombreCaracteristica)[c8] Finsi tCaracteristicas.busca[@str(tProductos(cIdPadreCaracteristica3);0)] Si tCaracteristicas->encontro gRenglon = tCaracteristicas(cNombreCaracteristica)[c10] Finsi imprime gRenglon gRenglon = '' Finsi Si @pos(@col(pInformacion;0);'3') != -1 // Impuesto 1 Impuesto 2 Impuesto 3 Retención 1 Retención 2 Columnas 20;2.4,0.15,3.3,0.15,3.15,0.15,2.85,0.15,2.4,0.15,3.15,1.05,0.15,0 gRenglon = '"'&@str(tProductos(cImpuesto1);2)[c2] gRenglon = '"'&@str(tProductos(cImpuesto2);2)[c4] gRenglon = '"'&@str(tProductos(cImpuesto3);2)[c6] gRenglon = '"'&@str(tProductos(cRetencion1);2)[c8] gRenglon = '"'&@str(tProductos(cRetencion2);2)[c10] imprime gRenglon gRenglon = '' Finsi Si @pos(@col(pInformacion;0);'2') != -1 // Porcentaje de Margen de Utilidad Método de costeo Columnas 20;2.4,0.15,6.6,0.15,7.65,0.15 gRenglon = '"'&@str(tProductos(cMargenUtilidad);2)[c2] Si tProductos(cMetodoCosteo)=1 gRenglon = 'Costo promedio en base a entradas'[c4] Sino Si tProductos(cMetodoCosteo)=2 gRenglon = 'Costo promedio por almacén en base a entradas'[c4] Sino Si tProductos(cMetodoCosteo)=3 gRenglon = 'Ultimo costo'[c4] Sino Si tProductos(cMetodoCosteo)=4 gRenglon = 'UEPS'[c4] Sino Si tProductos(cMetodoCosteo)=5 gRenglon = 'PEPS'[c4] Sino Si tProductos(cMetodoCosteo)=6 gRenglon = 'Costo específico'[c4] Sino gRenglon = 'Costo estandar'[c4] Finsi Finsi Finsi Finsi Finsi Finsi imprime gRenglon gRenglon = '' Finsi Si @pos(@col(pInformacion;0);'4') != -1 // desdcripcion detallada Columnas 20;2.4,0.15,14.1,0.15 gRenglon = tProductos(cDescripcionProducto)[c2] si @col(gRenglon;2) ='' gRenglon = '(ninguna)'[c2] Finsi imprime gRenglon gRenglon = '' Finsi texto ' ' imprime tProductos.Saltareg[1] FinMientras