Histórico da Página
...
Esta rotina permite que sejam executadas as compensações de todos os adiantamentos já efetuados e cadastrados, realizados pelos fornecedores (títulos tipo PA), além de notas de crédito a abater (títulos tipo NDF).
...
titulo a pagar com títulos a receber, efetuando desta forma o encontro de contas entre o fornecedor e o cliente.
Os títulos a serem considerados nesse processo são:
- Títulos de debito - exemplo: NF (Nota Fiscal)
- Títulos de credito - exemplo: PA (pagamento antecipado) , RA (Recebimento antecipado)
02. EXECUÇÃO
- Manual
Procedimento efetuado de forma manual via rotina Compensação contas a pagar (FINA340entre carteiras (FINA450), com exibição das telas envolvidas no processo e necessitando de ações/comandos do usuário
...
Procedimento realizado de forma automática na rotina de Compensação contas a pagar (FINA340entre carteiras (FINA450), sem exibição de telas ou necessidade de interação do usuário.
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#INCLUDE#include "Protheusrwmake.ch" #INCLUDE#include "RWMAKE.CH" #INCLUDE "TBICONN.CH" Static __COMPAUT := Nil User Function CMPAUTOMA() Local lRet := .F. Local cQry := "" Local aTipos := {"NF ", "PA ", "NDF"} Local cTblTmp'tbiconn.ch' User Function Auto450() Local aAutoCab := {} Local aArea := GetArea() Local cTabSe1 := "TMPSE1A" Local cTabSe2 := "TMPSE2A" Local aNF := {} Local aSE1450 aPA_NDF := {} Local aContabilaSE2450 := {} Local bBlock := Nil Local aFilCmp aEstorno := {} Local nSldComp := 0 Local nTaxaPA Private lMsHelpAuto := 0 Local nTaxaNF := 0 Local nHdl.F. Private lMsErroAuto := 0 Local nOperacao := 0 If __COMPAUT == Nil cQry := "SELECT E2_TIPO TIPO,.F. BeginSql Alias cTabSe1 SELECT R_E_C_N_O_ R_E_C_N_O FROM " + RetSqlName("SE2") + " " cQry += "WHERE E2_SALDO > 0 AND E2_TIPO IN (?) " cQry += "ORDER BY E2_TIPO" cQry := ChangeQuery(cQry) __COMPAUT := FWPreparedStatement():New(cQry) EndIf __COMPAUT:SetIn(1, aTipos) cQry := __COMPAUT:GetFixQuery() cTblTmp := MpSysOpenQuery(cQry) While (cTblTmp)->(!Eof()) If (cTblTmp)->TIPO $ MVPAGANT+"|"+MV_CPNEG Aadd(aPA_NDF, (cTblTmp)->R_E_C_N_O) Else Aadd(aNF, (cTblTmp)->R_E_C_N_O) EndIf (cTblTmp)->(DbSkip()) lRet := .T. EndDo (cTblTmp)->(DbCloseArea()) cTblTmp := "" If lRet Pergunte("AFI340", .F.) lContabiliza := MV_PAR11 == 1 lAglutina := MV_PAR08 == 1 lDigita := MV_PAR09 == 1 lRet := FinCmpAut(aNF, aPA_NDF, aContabil, bBlock, aEstorno, nSldComp, dDatabase, nTaxaPA ,nTaxaNF, nHdl, nOperacao) If lRet Alert("Compensação realizada com sucesso") Else Alert("Ocorreu um erro no processo de compensação") EndIf EndIf as RECNO FROM %Table:SE1% SE1 WHERE SE1.E1_FILIAL = 'D MG 01 ' AND SE1.E1_PREFIXO = 'CPT' AND SE1.E1_NUM = 'VT001' AND SE1.E1_TIPO = 'NF' AND SE1.E1_CLIENTE = 'FIN001' AND SE1.E1_LOJA = '01' AND SE1.%NotDel% EndSql While (cTabSe1)->(!EOF()) SE1->(DbGoto((cTabSe1)->RECNO)) AAdd(aSE1450, {SE1->E1_FILIAL+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1->E1_TIPO}) If ascan(aFilCmp,SE1->E1_FILIAL) == 0 Aadd(aFilCmp, SE1->E1_FILIAL) EndIf (cTabSe1)->(DbSkip()) Enddo (cTabSe1)->(DbCloseArea()) BeginSql Alias cTabSe2 SELECT R_E_C_N_O_ as RECNO FROM %Table:SE2% SE2 WHERE SE2.E2_FILIAL = 'D MG 02 ' AND SE2.E2_PREFIXO = 'CPT' AND SE2.E2_NUM = 'VT001' AND SE2.E2_TIPO = 'NF' AND SE2.E2_FORNECE = 'FIN001' AND SE2.E2_LOJA = '01' AND SE2.%NotDel% EndSql While (cTabSe2)->(!EOF()) SE2->(DbGoto((cTabSe2)->RECNO)) AAdd(aSE2450, {SE2->E2_FILIAL+SE2->E2_PREFIXO+SE2->E2_NUM+SE2->E2_PARCELA+SE2->E2_TIPO+SE2->E2_FORNECE+SE2->E2_LOJA}) If ascan(aFilCmp,SE2->E2_FILIAL) == 0 Aadd(aFilCmp, SE2->E2_FILIAL) EndIf (cTabSe2)->(DbSkip()) Enddo (cTabSe2)->(DbCloseArea()) aAutoCab :={ {"AUTDVENINI450", cTod('27/08/19') , nil},; {"AUTDVENFIM450", cTod('27/08/19') , nil},; {"AUTNLIM450" ,8000, nil},; {"AUTCCLI450" , "FIN001" , nil},; {"AUTCLJCLI" , "01" , nil},; {"AUTCFOR450" , "FIN001" , nil},; {"AUTCLJFOR" , "01" , nil},; {"AUTCMOEDA450" , "01" , nil},; {"AUTNDEBCRED" , 1 , nil},; {"AUTLTITFUTURO", .F. , nil},; {"AUTARECCHAVE" ,aSE1450, nil},; {"AUTAPAGCHAVE" , aSE2450 , nil},; {"AUTAFILCOMP" , aFilCmp , nil}} //Parâmetro opcional, somente devera ser informado quando houver uma compensação multi-filiais MSExecAuto({|x,y,z| Fina450(x,y,z)}, nil , aAutoCab , 3 ) If !lMsErroAuto ConOut("Incluido com sucesso! ") confirmsx8() Else ConOut("Erro na inclusao!") rollbacksx8() MostraErro() EndIf RestArea(aArea) Return |
Informações | ||
---|---|---|
| ||
Para utilizar o processo de Compensação Automática Contas a Pagar é necessário chamar a função: que a compensação funcione entre filiais se faz necessário o uso do parametro AUTAFILCOMP, caso contrario não ha a necessidade de informa-lo Para mais informações acesse a documentação da rotina automática Compensação entre carteiras automática FinCmpAut. |
03. OPERAÇÕES
- Compensar
Através desta operação é possível a compensação de títulos a pagar:
...