Alcances: | Microsiga Protheus 11 , Protheus 10 |
Versiones: | Protheus 10 |
Compatible países: | Todos |
Sistemas operativos: | Todos |
Compatible a las bases de datos: | Todos |
Nivel de acceso: | Nivel 1 (Acceso Clientes) |
Idiomas: | Portugués (Brasil) |
Descripción:
Esta rutina facilita la digitación de los conocimientos de flete.
Programa fuente:
MATA116.PRW
Sintaxis:
MATA116 - Programa de digitación de factura de conocimiento de flete ( [ PARAMIXB1 ] [ PARAMIXB2 ] ) --> nil
Devolución:
nil
(nulo)
Observaciones
Las condiciones más frecuentes son para FOB - el transporte del proveedor hasta el cliente no está incluido en el precio o CIF -, solo está incluido el valor de la entrega.
La factura de conocimiento de flete se emite cuando el transporte lo realiza una transportadora y es del tipo FOB. Se efectúan diversas entregas y, al final de un período definido por la empresa, se emite una factura para que se paguen los servicios de la transportadora.
De esta manera, para poder generar la factura, es necesario que la transportadora esté registrada como un proveedor, para que se genere un título por pagar, si la empresa tiene el módulo financiero integrado.
IMPORTANTE: El siguiente ejemplo se debe adaptar según la necesidad del cliente, con informaciones válidas como: Proveedor, TES, Producto, Condición de pago, Valor de la Factura de conocimiento de flete y las Facturas que participan del prorrateo de flete.
Ejemplo:// *Inclusión de conocimiento considerando Tipo Factura Normal** #INCLUDE "RWMAKE.CH" #INCLUDE "TBICONN.CH" #INCLUDE "Protheus.ch" User Function rmata116() Local cCodFor := "COM003" Local cLojFor := "01" Local cNumDoc := "COM116001" Local cSerie := "1" Local aCabec := {} Local aItens := {} Local aLinha := {} Local aRatcc := {} Local aRateio := {} Local aCCItem := {} Local nX := 0 Local nY := 0 Local nTamFilial := 0 Local lOk := .T. Local cFilSF1 := "" Private lMsErroAuto := .F. Private lMsHelpAuto := .T. //------------------------//| Apertura del entorno |//------------------------ //PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SB1","SD1","SF1" //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Verificación del entorno para prueba | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ //-- Verifica informaciones del producto dbSelectArea("SB1") dbSetOrder(1) If !SB1->(MsSeek(xFilial("SB1")+"001")) lOk := .F. ConOut("Registrar producto: 001") EndIf //-- Verifica informaciones del TES dbSelectArea("SF4") dbSetOrder(1) If !SF4->(MsSeek(xFilial("SF4")+"001")) lOk := .F. ConOut("Registrar TES: 001") EndIf //-- Verifica informaciones de la condición de pago dbSelectArea("SE4") dbSetOrder(1) If !SE4->(MsSeek(xFilial("SE4")+"001")) lOk := .F. ConOut("Registrar condición de pago: 001") EndIf //-- Verifica proveedor dbSelectArea("SA2") dbSetOrder(1) If !SA2->(MsSeek(xFilial("SA2")+"001")) lOk := .F. ConOut("Registrar proveedor: 001") EndIf If lOk //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Carga hasta 3 documentos de origen - Proveedor 000001 | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ dbSelectArea("SF1") dbSetOrder(1) MsSeek(xFilial("SF1")) While !EOF() IF (Alltrim(SF1->F1_FORNECE+SF1->F1_LOJA) =="COM00301") if nX<3 cFilSF1 := xFilial("SF1") nTamFilial := Len(cFilSF1) aadd(aItens,{{"PRIMARYKEY",AllTrim(SubStr(&(IndexKey()),nTamFilial + 1))}}) //Tratamiento para Gestión de Empresas else exit Endif nX++ EndIf dbskip() EndDo IF nX >0 //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Prueba de inclusión | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ aadd(aCabec,{"",Ctod("01/01/2015")}) //Data Inicial aadd(aCabec,{"",Ctod("01/12/2015")}) //Data Final aadd(aCabec,{"",2}) //2-Inclusión;1=Eliminación aadd(aCabec,{"",cCodFor}) //Proveedor del documento de origen aadd(aCabec,{"",cLojFor}) //Tienda de origen aadd(aCabec,{"",1}) //Tipo de la factura de origen: 1=Normal;2=Devol/Benef aadd(aCabec,{"",1}) //1=Agrupa;2=No agrupa aadd(aCabec,{"F1_EST",""}) aadd(aCabec,{"",1000}) //Valor del conocimiento aadd(aCabec,{"F1_FORMUL",2}) // Utiliza Formulario propio ? 1-No,2-Sí aadd(aCabec,{"F1_DOC",cNumDoc}) //..Numero de la factura de conocimiento de flete aadd(aCabec,{"F1_SERIE",cSerie}) aadd(aCabec,{"F1_FORNECE",cCodFor}) aadd(aCabec,{"F1_LOJA",cLojFor}) aadd(aCabec,{"","001"}) //TES aadd(aCabec,{"F1_BASERET",0}) aadd(aCabec,{"F1_ICMRET",0}) aadd(aCabec,{"F1_COND","001"}) aadd(aCabec,{"F1_EMISSAO",dDataBase}) aadd(aCabec,{"F1_ESPECIE","NF"}) //-- Prorrateo de centro de costos AAdd (aCCItem, {"DE_ITEM","01"}) AAdd (aCCItem, {"DE_PERC",45}) AAdd (aCCItem, {"DE_CC","COM002"}) AAdd (aRatCC, aCCItem) aCCItem := {} AAdd (aCCItem, {"DE_ITEM","02"}) AAdd (aCCItem, {"DE_PERC",55}) AAdd (aCCItem, {"DE_CC","COM003"}) AAdd (aRatCC, aCCItem) AAdd (aRateio, {"0001",aRatCC}) MATA116(aCabec,aItens,,,aRateio) If lMsErroAuto MostraErro() Conout("Erro!") Else Conout("Ok!") Endif EndIf EndIf RESET ENVIRONMENT Return(.T.) **************************************************************************** // Inclusión de conocimiento considerando Tipo Fact Devol/Benef #INCLUDE "RWMAKE.CH" #INCLUDE "TBICONN.CH" #INCLUDE "Protheus.ch" User Function mt116Dev() Local cCliFor := "COM002" Local cLclifor := "01" Local cNumDoc := "COM116002" Local cSerie := "1" Local cTransp := "COM003" Local cLtransp := "01" Local cOrigem := "COM000013" Local cSerie := "1 " Local cSerieId Local cEspecie := "CTR" Local cTipo := "C" Local nX := 0 Local nY := 0 Local aItens := {} Local aLinha := {} Local aCabec := {} Local nTamFilial := 0 Local lOk := .T. Local cFilSF1 := "" Private lMsErroAuto := .F. Private lMsHelpAuto := .T. //------------------------//| Abertura do ambiente |//------------------------ //PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SB1","SD1","SF1" //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Verificación del entorno para prueba | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ //-- Verifica informações de produto dbSelectArea("SB1") dbSetOrder(1) If !SB1->(MsSeek(xFilial("SB1")+"X123456")) lOk := .F. ConOut("Registrar producto: 001") EndIf //-- Verifica informaciones del TES dbSelectArea("SF4") dbSetOrder(1) If !SF4->(MsSeek(xFilial("SF4")+"001")) lOk := .F. ConOut("Registrar TES: 001") EndIf //-- Verifica informaciones de la condición de pago dbSelectArea("SE4") dbSetOrder(1) If !SE4->(MsSeek(xFilial("SE4")+"001")) lOk := .F. ConOut("Registrar condición de pago: 001") EndIf //-- Verifica proveedor dbSelectArea("SA2") dbSetOrder(1) If !SA2->(MsSeek(xFilial("SA2")+"000002")) lOk := .F. ConOut("Registrar proveedor: 001") EndIf If lOk //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Carga hasta 3 documentos de origen - Proveedor 000001 | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ dbSelectArea("SF1") dbSetOrder(1) MsSeek(xFilial("SF1")) While !EOF() IF (Alltrim(SF1->F1_FORNECE+SF1->F1_LOJA) =="COM00201") if nX<3 cFilSF1 := xFilial("SF1") nTamFilial := Len(cFilSF1) aadd(aItens,{{"PRIMARYKEY",AllTrim(SubStr(&(IndexKey()),nTamFilial + 1))}}) //Tratamiento para Gestión de Empresas else exit Endif nX++ EndIf dbskip() EndDo IF nX >0 //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Prueba de inclusión | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ aadd(aCabec,{"",Ctod("01/01/2015")}) //Fecha Inicial aadd(aCabec,{"",Ctod("01/12/2015")}) //Fecha Final aadd(aCabec,{"",2}) //2-Inclusión;1=Eliminación aadd(aCabec,{"",cCliFor}) //Proveedor del documento de Origen aadd(aCabec,{"",cLclifor}) //Tienda de origen aadd(aCabec,{"",2}) //Tipo de la factura de origen: 1=Normal;2=Devol/Benef aadd(aCabec,{"",1}) //1=Agrupa;2=No agrupa aadd(aCabec,{"F1_EST",""}) aadd(aCabec,{"",150}) //Valor del conocimiento aadd(aCabec,{"F1_FORMUL",1}) // Utiliza Formulario propio ? 1-No,2-Sí aadd(aCabec,{"F1_DOC",cNumDoc}) //..Numero de la factura de conocimiento de flete aadd(aCabec,{"F1_SERIE",cSerie}) aadd(aCabec,{"F1_FORNECE",cTransp}) aadd(aCabec,{"F1_LOJA",cLtransp}) aadd(aCabec,{"","001"}) //TES aadd(aCabec,{"F1_BASERET",0}) aadd(aCabec,{"F1_ICMRET",0}) aadd(aCabec,{"F1_COND","001"}) aadd(aCabec,{"F1_EMISSAO",dDataBase}) aadd(aCabec,{"F1_ESPECIE",cEspecie}) //aadd(aItens,{"PRIMARYKEY",cOrigem}) MSExecAuto({|x,y| Mata116(x,y)},aCabec,aItens) If lMsErroAuto MostraErro() Conout("Erro!") Else Conout("Ok!") Endif EndIf EndIf RESET ENVIRONMENT Return(.T.)
Parámetros:
Nombre | Tipo | Descripción | Estándar | Obligatorio | Referencia |
PARAMIXB1 | Array of Record | Contiene los valores para generar la factura de conocimiento de flete. | |||
PARAMIXB2 | Array of Record | Contiene las facturas que entrarán en el prorrateo de la factura de conocimiento de flete. | |||
PARAMIXB3 | Array of Record | Contiene las informaciones para prorrateo por centro de costo | |||
PARAMIXB4 | Array of Record | Conteúdo de gravação das naturezas de rendimentos e dados de suspensão |
Parámetros SX6:
Nombre de la variable | MV_AZFRETE |
Contenido estándar | .T. |
Descripción | Indica si en el conocimiento de flete, se debe dejar en cero la alícuota del ítem que tenga alícuota en cero en la factura de origen. |
Comportamiento | Si la alícuota de la factura de origen se deja en cero, el sistema no calculará la alícuota si el parámetro está habilitado. Esta es la configuración estándar. Para que el sistema calcule la alícuota en esta situación, se debe inhabilitar este parámetro. |