Histórico da Página
...
Posição | Tipo | Nome | Descrição | |||||
---|---|---|---|---|---|---|---|---|
1 | Numérico | nPosArotina | Utilizado para indicar a operação a ser executada. Utilizada apenas pela chamada da rotina padrão pelo menu. Enviar NIL ou 0 (zero). | |||||
2 | Vetor | aAutoCab | Utilizado para enviar dados referentes ao processo, como:
| |||||
3 | Vetor | aAutoItens | Vetor utilizado para envio dos dados referentes aos títulos a serem gerados, como:
Exemplo: Aadd(aItens,{; | |||||
4 | Numérico | nOpcAuto | Processo que se deseja realizar: 3 = Liquidação 4 = Re-liquidação 5 = Cancelamento de Liquidação | |||||
5 | Caractere | cAutoFil | Expressão ADVPL para filtro de seleção dos títulos geradores da liquidação (a serem liquidados). Será utilizado se o parâmetro cFilSQL não for informado.
| |||||
6 | Caractere | cNumLiqCan | Número da liquidação que se quer cancelar. Enviado apenas em caso de nOpcAuto = 5 | |||||
7 | Vetor | aRotAutoVA | Vetor utilizado para envio dos valores acessórios dos títulos que serão gerados. | |||||
8 | Numérico | nOutrMoed | Tratamento para outras moedas (idêntico à tela de filtro). 1 = Converte | |||||
9 | Numérico | nTxNegoc | Taxa da moeda da negociação.
| |||||
10 | Numérico | nTpTaxa | Tipo da taxa da negociação. 1=Fixa
| |||||
11 | Caractere | cFunOrig | O valor desta variável será gravada no campo E1_ORIGEM.
| |||||
12 | Numérico | nTxCalJur | ||||||
13 | Caractere | cFilSQL | Expressão SQL para filtro de seleção dos títulos geradores da liquidação (a serem liquidados). Substitui o filtro em ADVPL (cAutoFil). |
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
#include "PROTHEUS.CH" User Function UFINA460() Local cNum := "" Local nZ := 0 Local aCab := {} Local aItens := {} Local nOpc := 3 //3-Liquidação,4-Reliquidacao,5-Cancelamento da liquidação Local cFiltro := "" Local cLiqCan := Space(6) //numero da liquidacao a cancelar Local aParcelas := {} Local nValor := 2000 //Valor a liquidar Local cCond := '001' //Condicao de pagamento 1x Local nRadio := 1 Local oRadio Local oLiqCan Local lAutoPix := .F. cNum := padr("200", tamSx3("E1_NUM")[1]) //Tela utilizada apenas para exemplo nOpca := 0 DEFINE MSDIALOG oDlg FROM 094,1 TO 240,300 TITLE "Liquidação Automatica" PIXEL @ 010,010 Radio oRadio VAR nRadio; ITEMS "Liquidar",; "Reliquidar",; "Cancelar"; 3D SIZE 50,10 OF oDlg PIXEL ; ON CHANGE ( oLiqCan:lReadOnly := If(nRadio != 3, .T., .F.)) @ 022,070 SAY "Cancel. Liquidação:" SIZE 49, 07 OF oDlg PIXEL @ 030,070 MSGET oLiqCan VAR cLiqCan Valid !Empty(cLiqCan) SIZE 49, 11 OF oDlg PIXEL hasbutton DEFINE SBUTTON FROM 55,085 TYPE 1 ENABLE OF oDlg ACTION ( nOpca := 1, oDlg:End()) DEFINE SBUTTON FROM 55,115 TYPE 2 ENABLE OF oDlg ACTION ( nOpca := 0, oDlg:End()) ACTIVATE MSDIALOG oDlg CENTERED If nOpca == 1 If nRadio == 1 .or. nRadio == 2 If nRadio == 1 //liquidacao nOpc := 3 //Filtro do Usuário cFiltro := "E1_FILIAL == '"+xFilial("SE1") + "' .And. " cFiltro += "E1_CLIENTE == '000100' .And. E1_LOJA == '01' .And. " cFiltro += "E1_SITUACA $ '0FG' .And. E1_SALDO > 0 .and. " cFiltro += 'Empty(E1_NUMLIQ)' Else nOpc := 4 //reliquidacao //Filtro do Usuário cFiltro := "E1_FILIAL == '"+xFilial("SE1") + "' .And. " cFiltro += "E1_CLIENTE == '000100' .And. E1_LOJA == '01' .And. " cFiltro += "E1_SITUACA $ '0FG' .And. E1_SALDO > 0 .and. " cFiltro += '!Empty(E1_NUMLIQ)' Endif //Array do processo automatico (aAutoCab) aCab := { {"cCondicao" ,cCond },; {"cNatureza" ,"001" },; {"E1_TIPO" ,"NF " },; {"cCLIENTE" ,"000100"},; {"nMoeda" ,1 },; {"cLOJA" ,"01" },; {"AUTMRKPIX", lAutoPix }} //------------------------------------------------------------ //Monta as parcelas de acordo com a condição de pagamento //------------------------------------------------------------ aParcelas := Condicao( nValor, cCond,, dDataBase) //-------------------------------------------------------------- //Não é possivel mandar Acrescimo e Decrescimo junto. //Se mandar os dois valores maiores que zero considera Acrescimo //-------------------------------------------------------------- For nZ := 1 to Len(aParcelas) //Dados das parcelas a serem geradas Aadd(aItens,{{ "E1_PREFIXO", "LIQ" },; //Prefixo {"E1_BCOCHQ" , "CX1" },; //Banco {"E1_AGECHQ" , "00001" },; //Agencia {"E1_CTACHQ" , "0000000001" },; //Conta {"E1_NUM" , cNum },; //Nro. cheque (dará origem ao numero do titulo) {"E1_EMITCHQ" , "EXECAUTO" },; //Emitente do cheque {"E1_VENCTO" , aParcelas[nZ,1]},; //Data boa {"E1_VLCRUZ" , aParcelas[nZ,2]},; //Valor do cheque/titulo {"E1_ACRESC" , 0 },; //Acrescimo {"E1_DECRESC" , 0 }}) //Decrescimo cNum := Soma1(cNum, Len( Alltrim(cNum))) Next nZ If Len( aParcelas) > 0 //Liquidacao e reliquidacao //FINA460(nPosArotina,aAutoCab,aAutoItens,nOpcAuto,cAutoFil,cNumLiqCan) FINA460(, aCab, aItens, nOpc, cFiltro) //Inclusao // Este aviso funciona apenas para teste monousuario Alert("Liquidacao Incluida -> " + GetMv("MV_NUMLIQ")) Endif Else nOpc := 5 //Cancelamento FINA460(,,, nOpc,, cLiqCan) //Cancelamento Alert("Liquidacao Cancelada -> " + cLiqCan) Endif EndIf Return |
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
#INCLUDE 'Protheus.ch' User Function TST460() Local nX := 0 Local aCab := {} Local aItens := {} Local cFilSQL := "" //filtro quem conterá os títulos que serão liquidados, gerado com base no array aTitOri Local aTitOri := {} Local cNaturez := '000001' Local nMoeda := 1 Local cTipoLiq := 'FT ' Local cCond := "" local cLiqPref := 'FIN' local cLiqNum := '000000242' local cLiqParcela := 'A' Local cLiqTipo := "FT " local cLiqCli := '000001' local cLiqLoja := '01' local nValLiq := 2000 Local lAutoPix := .F. Private lMsErroAuto := .F. Private lAutoErrNoFile := .T. Aadd(aTitOri,{'D MG 01 ', 'FIN', '000000001', 'A', 'NF ', '000001', '01'}) Aadd(aTitOri,{'D MG 01 ', 'FIN', '000000001', 'B', 'NF ', '000001', '01'}) Aadd(aItens,{{"E1_PREFIXO",cLiqPref}, {'E1_NUM', cLiqNum}, {'E1_PARCELA', cLiqParcela}, {'E1_VENCTO', dDatabase}, {'E1_VLCRUZ', nLiqVal}}) cFilSQL := " (" For nX := 1 To Len(aTitOri) If nX > 1 cFilSQL += " OR " EndIf cFilSQL += " (" cFilSQL += " E1_FILIAL = '" + aTitOri[nX][1] + "' AND " cFilSQL += " E1_PREFIXO = '" + aTitOri[nX][2] + "' AND E1_NUM = '" + aTitOri[nX][3] + "' AND " cFilSQL += " E1_PARCELA = '" + aTitOri[nX][4] + "' AND E1_TIPO = '" + aTitOri[nX][5] + "' AND " cFilSQL += " E1_CLIENTE = '" + aTitOri[nX][6] + "' AND E1_LOJA = '" + aTitOri[nX][7] + "' )" Next nX cFilSQL += ") AND E1_SITUACA IN ('0','F','G') AND E1_SALDO > 0 AND LTRIM(E1_NUMLIQ) = '' " aCab := {} aAdd(aCab, {"cCondicao", cCond}) //Condição de pagamento aAdd(aCab, {"cNatureza", cNaturez}) //Natureza aAdd(aCab, {"E1_TIPO", cLiqTipo}) //Tipo aAdd(aCab, {"cCliente", cLiqCli}) //Cliente aAdd(aCab, {"cLoja", cLiqLoja}) //Loja aAdd(aCab, {"nMoeda", nMoeda}) //Moeda aAdd(aCab, {"AUTMRKPIX", lAutoPix}) //Pix Fina460(/*nPosArotina*/,aCab,aItens,3,/*cFiltroADVPL*/,/*xNumLiq*/,/*xRotAutoVa*/,/*xOutMoe*/,/*xTxNeg*/,/*xTpTaxa*/,/*xFunOrig*/,/*xTxCalJur*/,cFilSQL) Return |
...