| Exemplo: #INCLUDE "PROTHEUS.CH" User Function MyFINA040() Local aCab := {} //Array com os Dados do Titulo a Receber Local aAuxEv := {} //Array Auxiliar do Rateio Multinaturezas Local aRatEvEz := {} //Array do Rateio Multinaturezas Local aAuxEz := {} //Array Auxiliar de Multiplos Centros de Custo Local aRatEz := {} //Array do Rateio de Centro de Custo em Multiplas Naturezas Local nI := 0 Local cTitulo := "000000001" Local cRet := "" Private lMsErroAuto := .F. Private lAutoErrNoFile := .T.
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "FIN" Aadd(aCab, {"E1_PREFIXO", "NFE", NIL}) Aadd(aCab, {"E1_NUM", cTitulo, NIL}) Aadd(aCab, {"E1_PARCELA", "A", NIL}) Aadd(aCab, {"E1_TIPO", "NF ", NIL}) Aadd(aCab, {"E1_NATUREZ", "0000000001", NIL}) Aadd(aCab, {"E1_CLIENTE", "000001", NIL}) Aadd(aCab, {"E1_LOJA", "01", NIL}) Aadd(aCab, {"E1_EMISSAO", dDataBase, NIL}) Aadd(aCab, {"E1_VENCTO", dDataBase, NIL}) Aadd(aCab, {"E1_VALOR", 100, NIL}) Aadd(aCab, {"E1_MULTNAT", "1", NIL}) //Rateio Multinaturezas == 1 - Sim
//Adicionando o vetor da natureza Aadd(aAuxEv,{"EV_NATUREZ", "0000000001", NIL }) //Natureza a Ratear Aadd(aAuxEv,{"EV_VALOR", 100, NIL }) //Valor do Rateio na Natureza Aadd(aAuxEv,{"EV_PERC", 100, NIL }) //Percentual do Rateio na Natureza Aadd(aAuxEv,{"EV_RATEICC", "1", NIL }) //Rateio por Centro de Custo == 1 - Sim
//Adicionando Multiplos Centros de Custo //Primeiro Centro de Custo aAuxEz := {} Aadd( aAuxEz, {"EZ_CCUSTO", "000000001", NIL}) //Centro de Custo da Natureza Aadd( aAuxEz, {"EZ_ITEMCTA", "000000001", NIL}) //Item Conta da Natureza Aadd( aAuxEz, {"EZ_VALOR", 50, NIL}) //Valor do Rateio neste Centro de Custo Aadd( aAuxEz, {"EZ_CLVL", "0000000001", NIL}) Aadd( aAuxEz, {"EZ_EC05DB", "ENT05D", NIL}) Aadd( aAuxEz, {"EZ_EC05CR", "ENT05C", NIL}) Aadd( aAuxEz, {"EZ_EC06DB", "ENT06D", NIL}) Aadd( aAuxEz, {"EZ_EC06CR", "ENT06C", NIL}) Aadd( aAuxEz, {"EZ_EC07DB", "ENT07D", NIL}) Aadd( aAuxEz, {"EZ_EC07CR", "ENT07C", NIL}) Aadd( aAuxEz, {"EZ_EC08DB", "ENT08D", NIL}) Aadd( aAuxEz, {"EZ_EC08CR", "ENT08C", NIL}) Aadd( aAuxEz, {"EZ_EC09DB", "ENT09D", NIL}) Aadd( aAuxEz, {"EZ_EC09CR", "ENT09C", NIL}) Aadd(aRatEz, aAuxEz) //Segundo Centro de Custo aAuxEz := {} Aadd( aAuxEz, {"EZ_CCUSTO", "000000002", NIL}) //Centro de Custo da Natureza Aadd( aAuxEz, {"EZ_ITEMCTA", "000000002", NIL}) //Item Conta da Natureza Aadd( aAuxEz, {"EZ_VALOR", 50, NIL}) //Valor do Rateio neste Centro de Custo Aadd( aAuxEz, {"EZ_CLVL", "0000000002", NIL}) Aadd( aAuxEz, {"EZ_EC05DB", "ENT05D", NIL}) Aadd( aAuxEz, {"EZ_EC05CR", "ENT05C", NIL}) Aadd( aAuxEz, {"EZ_EC06DB", "ENT06D", NIL}) Aadd( aAuxEz, {"EZ_EC06CR", "ENT06C", NIL}) Aadd( aAuxEz, {"EZ_EC07DB", "ENT07D", NIL}) Aadd( aAuxEz, {"EZ_EC07CR", "ENT07C", NIL}) Aadd( aAuxEz, {"EZ_EC08DB", "ENT08D", NIL}) Aadd( aAuxEz, {"EZ_EC08CR", "ENT08C", NIL}) Aadd( aAuxEz, {"EZ_EC09DB", "ENT09D", NIL}) Aadd( aAuxEz, {"EZ_EC09CR", "ENT09C", NIL}) Aadd(aRatEz, aAuxEz)
Aadd(aAuxEv,{"AUTRATEICC", aRatEz, NIL}) //Recebendo dentro do Array da Natureza os Multiplos Centros de Custo Aadd(aRatEvEz,aAuxEv) //Adicionando a Natureza ao Rateio de Multiplas Naturezas
MsExecAuto({ |x, y, z, a, b| FINA040(x, y, z, a, b)}, aCab, 3, NIL, aRatEvEz)
If lMsErroAuto If IsBlind() aLog := GetAutoGRLog() cRet := + "ERRO" + CRLF For nI := 1 to len(aLog) cRet += aLog[nI] + CRLF Next nI ConOut(cRet) Else mostraErro() EndIf Else If IsBlind() ConOut(CRLF + "Operação realizada com sucesso " + CRLF + "Numero do Titulo Incluido : " + SE1->E1_NUM) Else MsgInfo("Operação realizada com sucesso " + CRLF + "Numero do titulo Incluido : " + SE1->E1_NUM) EndIf EndIf RESET ENVIRONMENT Return NIL |