01. DATOS GENERALES


Línea de producto: Microsiga Protheus.
Segmento:Servicios - Mercado Internacional.
Módulo:SIGACOM - Compras.
Función:

Rutina(s)

Nombre

MATA447

Registro de pedimentos.

MATA447BGeneración de documentos de compras.
MATA447DFunciones para el calculo de impuestos de importación.
Rutina(s) involucrada(s)Nombre
MATA447AFunciones para pedimentos de extracción.
MATA447CFunciones para pedimentos de rectificación.
M100LIVRGeneración de Libros Fiscales - Entrada.
Issue:DMINA-7322
Versión:12.1.17. | 12.1.23 | 12.1.25


02. SITUACIÓN/REQUISITO

Las rutinas de pedimentos ya se pueden probar  a través de las rutinas de testes automatizados (MATA447TestCase.prw), pero con la evolución de la herramienta de testes automatizados, los comandos (principalmente MSDIALOG), propiedades de objetos o funciones de visualización que usan estas rutinas, hicieron que los testes automatizados no permitieran ser ejecutados, ya que marcaban error log, apenas encontraba alguna funcionalidad de visualización.

03. SOLUCIÓN

Se modificaron las rutinas MATA447, MATA447B y MATA447D, con bifurcaciones en el código que identifican si se esta ejecutando la rutina por teste automatizado (haciendo uso del comando IsBlind()).  Si se ejecuta por teste automatizado, evita el paso por los comandos de visualización, y toda la información que es enviada a través de los arreglos de la rutina MATA447TestCase.prw, son capturados también en arreglos, en la rutina MATA447.

Si la rutina no es ejecutada a través de testes automatizados, se tiene el cuidado de que los valores capturados por los objetos de visualización, sean pasados a los arreglos, para así dar funcionalidad a los 2 diferentes escenarios, evitando así generar error log.

Se creo la función CpyResGetDad(lCopia,cObjeto), que permite la copia del objeto para arreglos y viceversa.

Parámetros:

lCopia

.T. , copia el acols, aheader, Nat y  oBrowse:ColPo del objeto de visualización para arreglos y variables.

.F. , copia arreglos y variables para los objetos de visualización.

cObjetoNombre del Objeto

Ejemplo de uso:

CpyResGetDad(.t.,"oGetIncrem") // Pasa el contenido del aHeader, aCols, Nat, y oBrowse:ColPos  del objeto oGetIncrem, para los arreglos aHoGetIncrem, aCoGetIncrem y variables nNoGetIncrem y nPoGetIncrem.

CpyResGetDad(.f.,"oGetIncrem") // Pasa el contenido de los arreglos aHoGetIncrem, aCoGetIncrem  y  variables nNoGetIncrem y nPoGetIncrem, para el objeto oGetIncrem.


Se crearon  las variables privadas de todos los arreglos que se usan por los objetos de visualización de las rutina implicadas:

Private aCoGetIncrem:={} //aCols de Incrementables
Private aCoGetImpPed:={} //aCols de Impuestos por pedimento
Private aCoGetFacts :={} //aCols de encabezado de factura
Private aCoGetItemF :={} // aCols de ítems por factura
Private aCoGetCosto :={} //aCols de Costos
Private aCoGetTot1 :={} //aCols de Pie de pagina.- Total pedimentos y total de gastos extranjeros
Private aCoGetTot2 :={} //aCols de Pie de Pagina.- Total de gastos nacionales
Private aCoGetTot3 :={} //aCols de Total de impuestos

Private aHoGetIncrem:={} //aHeader de Incrementables
Private aHoGetImpPed:={} //aHeader de Impuestos por pedimento
Private aHoGetFacts :={} //aHeader de encabezado de factura
Private aHoGetItemF :={} // aHeader de ítems por factura
Private aHoGetCosto :={} //aHeader de Costos
Private aHoGetTot1 :={} //aHeader de Pie de pagina.- Total pedimentos y total de gastos extranjeros
Private aHoGetTot2 :={} //aHeader de Pie de Pagina.- Total de gastos nacionales
Private aHoGetTot3 :={} //aHeader de Total de impuestos

Private nNoGetIncrem:=0 //Posición del renglón de Incrementables
Private nNoGetImpPed:=0 //Posición del renglón de Impuestos por pedimento
Private nNoGetFacts :=0 //Posición del renglón de encabezado de factura
Private nNoGetItemF :=0 //Posición del renglón de ítems por factura
Private nNoGetCosto :=0 //Posición del renglón de Costos
Private nNoGetTot1 :=0 //Posición del renglón de Pie de pagina.- Total pedimentos y total de gastos extranjeros
Private nNoGetTot2 :=0 //Posición del renglón de Pie de Pagina.- Total de gastos nacionales
Private nNoGetTot3 :=0 //Posición del renglón de Total de impuestos

Private nPoGetIncrem:=0 //Posición de la columna de Incrementables
Private nPoGetImpPed:=0 //Posición de la columna de Impuestos por pedimento
Private nPoGetFacts :=0 //Posición de la columna de encabezado de factura
Private nPoGetItemF :=0 //Posición de la columna de ítems por factura
Private nPoGetCosto :=0 //Posición de la columna de Costos
Private nPoGetTot1 :=0 //Posición de la columna de Pie de pagina.- Total pedimentos y total de gastos extranjeros
Private nPoGetTot2 :=0 //Posición de la columna de Pie de Pagina.- Total de gastos nacionales
Private nPoGetTot3 :=0 //Posición de la columna de Total de impuestos


Private aCoGetIm1 :={} //acols getdados de encabezado de impuestos
Private aCoGetIm2 :={} // acols getdados de ítems de impuestos

Private aHoGetIm1:={} //aheader del getdados de encabezado de impuestos
Private aHoGetIm2:={} //aheader del getdados de ítems de impuestos

Private nNoGetIm1:=0 //Nat del getdados de encabezado de impuestos
Private nNoGetIm2:=0 //Nat del getdados de ítems de impuestos
Private nPoGetIm1:=0 //Colpos del getdados de encabezado de impuestos
Private nPoGetIm2:=0 //Colpos del getdados de ítems de impuestos

¡IMPORTANTE!

Para futuros mantenimientos a las rutinas aquí mencionadas, se debe de tener en cuenta el uso de esta función y al finalizar la codificación, realizar pruebas tanto de testes automatizados como la de hacer el registro desde la opción de pedimentos.