Producto: | TOTVS Backoffice |
---|---|
Línea de producto: | Línea Protheus |
Segmento: | Backoffice |
Módulo: | SIGAFAT - Facturación |
Función: | MAPVLNFS - Generación de documento de salida a partir de ítems de Pedido(s) de venta |
Alcances: | Microsiga Protheus 12 |
Versiones: | Microsiga Protheus 12 |
Compatible países: | Todos |
Sistemas operativos: | Todos |
Compatible con las bases de datos: | Todos |
Nivel de acceso: | Nivel 1 (Acceso Clientes) |
Idiomas: | Todos |
Función utilizada para la generación del Documento fiscal de salida a partir de ítems del Pedido de venta.
IMPORTANTE
La función MaPvlNfs no es responsable por validar los bloqueos de los ítems liberados (SC9). De esta manera, la personalización se vuelve responsable por la verificación de los bloqueos de Stock (C9_BLEST) y Crédito (C9_BLCRED), de acuerdo con la regla de negocio implementada por el desarrollador.
MaPvlNfs( < aPvlNfs >, < cSerieNFS >, [ lMostraCtb ], [ lAglutCtb ], [ lCtbOnLine ], [ lCtbCusto ], [ lReajuste ], [ nCalAcrs ], [ nArredPrcLis ], [ lAtuSA7 ], [ lECF ], [ cEmbExp ], [ bAtuFin ], [ bAtuPGerNF ], [ bAtuPvl ], [ bFatSE1 ], [ dDataMoe ], [ lJunta ] )
Nombre | Tipo | Descripción | Estándar | Obligatorio | Referencia |
aPvlNfs | Array | Array con los ítems que se generarán | Sí | ||
cSerieNFS | Carácter | Serie de la factura | Sí | ||
lMostraCtb | Lógico | Muestra asiento contable | No | ||
lAglutCtb | Lógico | Agrupa asiento contable | No | ||
lCtbOnLine | Lógico | Contabiliza on-line | No | ||
lCtbCusto | Lógico | Contabiliza costo on-line | No | ||
lReajuste | Lógico | Reajuste de preció en la factura | No | ||
nCalAcrs | Numérico | Tipo de aumento financiero | No | ||
nArredPrcLis | Numérico | Tipo de redondeo | No | ||
lAtuSA7 | Lógico | Actualiza vínculo Cliente vs. Producto | No | ||
lECF | Lógico | Comprobante fiscal | No | ||
cEmbExp | Carácter | Número de embarque de exportación | No | ||
bAtuFin | Bloque de código | Bloque de código para complemento de actualización de los títulos financieros | No | ||
bAtuPGerNF | Bloque de código | Bloque de código para complemento de actualización de los datos después de la generación de la factura | {||} | No | |
bAtuPvl | Bloque de código | Bloque de código de actualización del Pedido de venta antes de la generación de la factura | {||} | No | |
bFatSE1 | Bloque de código | Bloque de código para indicar si el valor del Título por cobrar se grabará en el campo F2_VALFAT cuando el parámetro MV_TMSMFAT esté con el valor igual a "2". | {|| .T. } | No | |
dDataMoe | Fecha | Fecha de la cotización para la conversión de los valores de la moneda del Pedido de venta a la moneda fuerte | dDatabase | No | |
lJunta | Lógico | Agrupa pedidos iguales | .F. | No |
cNumNFS - Tipo: Caractere - Número do Documento Fiscal de Saída
#INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" User Function MyPVLNFS() Local aPvlDocS := {} Local nPrcVen := 0 Local cC5Num := "pcpAO9" Local cSerie := "001" Local cEmbExp := "" Local cDoc := "" PREPARE ENVIRONMENT EMPRESA "T1" SUCURSAL "D MG 01 " MÓDULO "FAT" TABLES "SF2","SD2","SA1","SA2","SB1","SB2","SF4","SED","SE1" SC5->(DbSetOrder(1)) SC5->(MsSeek(xFilial("SC5")+cC5Num)) SC6->(dbSetOrder(1)) SC6->(MsSeek(xFilial("SC6")+SC5->C5_NUM)) //Es necesario cargar el grupo de preguntas MT460A, si no se ejecuta con los valores estándar. Pregunta("MT460A",.F.) // Obtener los datos de cada ítem del pedido de ventas liberado para generar el Documento de salida While SC6->(!Eof() .And. C6_FILIAL == xFilial("SC6")) .And. SC6->C6_NUM == SC5->C5_NUM SC9->(DbSetOrder(1)) SC9->(MsSeek(xFilial("SC9")+SC6->(C6_NUM+C6_ITEM))) //SUCURSAL+NÚMERO+ÍTEM SE4->(DbSetOrder(1)) SE4->(MsSeek(xFilial("SE4")+SC5->C5_CONDPAG) ) //SUCURSAL+CONDICIÓN PAGO SB1->(DbSetOrder(1)) SB1->(MsSeek(xFilial("SB1")+SC6->C6_PRODUTO)) //SUCURSAL+PRODUCTO SB2->(DbSetOrder(1)) SB2->(MsSeek(xFilial("SB2")+SC6->(C6_PRODUTO+C6_LOCAL))) //SUCURSAL+PRODUCTO+LOCAL SF4->(DbSetOrder(1)) SF4->(MsSeek(xFilial("SF4")+SC6->C6_TES)) //SUCURSAL+TES nPrcVen := SC9->C9_PRCVEN If ( SC5->C5_MOEDA <> 1 ) nPrcVen := xMoeda(nPrcVen,SC5->C5_MOEDA,1,dDataBase) EndIf If AllTrim(SC9->C9_BLEST) == "" .And. AllTrim(SC9->C9_BLCRED) == "" AAdd(aPvlDocS,{ SC9->C9_PEDIDO,; SC9->C9_ITEM,; SC9->C9_SEQUEN,; SC9->C9_QTDLIB,; nPrcVen,; SC9->C9_PRODUTO,; .F.,; SC9->(RecNo()),; SC5->(RecNo()),; SC6->(RecNo()),; SE4->(RecNo()),; SB1->(RecNo()),; SB2->(RecNo()),; SF4->(RecNo())}) EndIf SC6->(DbSkip()) EndDo SetFunName("MATA461") cDoc := MaPvlNfs( /*aPvlNfs*/ aPvlDocS,; // 01 - Array con los ítems que se generarán /*cSerieNFS*/ cSerie,; // 02 - Serie de la factura /*lMostraCtb*/ .F.,; // 03 - Muestra asiento contable /*lAglutCtb*/ .F.,; // 04 - Agrupa asiento contable /*lCtbOnLine*/ .F.,; // 05 - Contabiliza on-line /*lCtbCusto*/ .T.,; // 06 - Contabiliza costo on-line /*lReajuste*/ .F.,; // 07 - Reajuste de precio en la factura /*nCalAcrs*/ 0,; // 08 - Tipo de aumento financiero /*nArredPrcLis*/ 0,; // 09 - Tipo de redondeo /*lAtuSA7*/ .T.,; // 10 - Actualiza vínculo Cliente vs. Producto /*lECF*/ .F.,; // 11 - Comprobante fiscal /*cEmbExp*/ cEmbExp,; // 12 - Número del embarque de exportación /*bAtuFin*/ {||},; // 13 - Bloque de código para complemento de actualización de los títulos financieros /*bAtuPGerNF*/ {||},; // 14 - Bloque de código para complemento de actualización de los datos después de la generación de la factura /*bAtuPvl*/ {||},; // 15 - Bloque de código de actualización del Pedido de venta antes de la generación de la factura /*bFatSE1*/ {|| .T. },; // 16 - Bloque de código para indicar si el valor del Título por cobrar se grabará en el campo F2_VALFAT cuando el parámetro MV_TMSMFAT esté con el valor igual a "2". /*dDataMoe*/ dDatabase,; // 17 - Fecha de la cotización para conversión de los valores de la Moneda del Pedido de venta a la Moneda fuerte /*lJunta*/ .F.) // 18 - Agrupa pedidos iguales If !Empty(cDoc) Conout("Documento de salida: " + cSerie + "-" + cDoc + ", generado con éxito.") EndIf RESET ENVIRONMENT Return .T.
Para la Generación del Título y Formulario GNRE, la pantalla de preguntas de la rutina Generación de documento de salida (MATA460A) debe estar cumplimentada como "Sí" en las preguntas de Generación de Título y de Formulario de ICMS Propio, y el parámetro MV_GNRENF debe estar cumplimentado con el contenido .T. (Verdadero), cuando se utilice la función MaPvlNfs() para que la pantalla de la GNRE/DIFAL no se ejecute.
Importante
La función MaPvlNfs genera un único Documento de salida con todos los ítems informados en el array aPvlNfs, de esta manera, si fuera necesario generar más de un documento de salida, la función debe llamarse más de una vez con el array aPvlNfs incluyendo los ítems referentes a cada factura que se generará.