Conteúdo
01. VISÃO GERAL
Ponto de entrada para compensações da DCTF através de títulos manuais compensados.
01. EXEMPLO DE UTILIZAÇÃO
A978COMP
/*Programa: A978COMP Autor: Microsiga Data: 31/03/2006 º±±Descricao: PE para tratar as compensações da DCTF através de títulos manuais compensados º±± */ User Function A978COMP() Local cAlsSe2 := PARAMIXB[1] Local aBaixa := PARAMIXB[2] Local cComp := Iif ("COMPENSACAO"$Upper (aBaixa[9]), "S", "N") Local aFornece := PARAMIXB[3] Local cCodRetVar := StrZero(Val (PARAMIXB[4]), 5) Local cDSQD := StrZero (PARAMIXB[5], 2) Local dDtApur := PARAMIXB[6] Local cMBTQS := StrZero (PARAMIXB[7], 2) Local cPeriod := PARAMIXB[8] Local nCnpjDarf := PARAMIXB[9] Local cCodMun := PARAMIXB[10] Local cCodRet := PARAMIXB[11] Local cAnoApur := StrZero (Year (dDtApur), 4) Local aInfComp := {"N","","",.T.} ////SOMENTE PARA COMPENSACAO// If ("S"$cComp) RetComp((cAlsSe2)->E2_PREFIXO,(cAlsSe2)->E2_NUM,(cAlsSe2)->E2_PARCELA,(cAlsSe2)->E2_TIPO,(cAlsSe2)->E2_FORNECE,(cAlsSe2)->E2_LOJA,@aInfComp) // TRB utilizado na geracao dos registros. If !TRB->(DbSeek(aFornece[1]+aFornece[2]+cCodRetVar+cDSQD+cAnoApur+cMBTQS+aInfComp[1]+aInfComp[2]+aInfComp[3])) TRB->(RecLock("TRB", .T.)) TRB->TRB_FORN := aFornece[1] TRB->TRB_LOJA := aFornece[2] TRB->TRB_CODREC := Val (cCodRetVar) TRB->TRB_ANOAPU := Val (cAnoApur) TRB->TRB_MESAPU := Val (cMBTQS) TRB->TRB_DSQD := Val (cDSQD) TRB->TRB_PERIOD := cPeriod // Regra na validacao - Somente deverah ser preenchido quando nao for compensacao ou quando // for e a formalizacao for 3. If ("S"$aInfComp[1] .And. "3"$aInfComp[2]) .Or. ("N"$aInfComp[1]) TRB->TRB_PERAPU := dDtApur TRB->TRB_CNPJDA := nCnpjDarf TRB->TRB_CODRE2 := Val ((cAlsSe2)->E2_CODRET) TRB->TRB_DTVENC := (cAlsSe2)->E2_VENCREA EndIf TRB->TRB_DATA := dDtApur TRB->TRB_COMP := aInfComp[1] TRB->TRB_FORMAL := aInfComp[2] TRB->TRB_NUMERO := aInfComp[3] If ("4028"$cCodRet) TRB->TRB_NUMRER := cCodMun Else TRB->TRB_NUMRER := "" EndIf TRB->TRB_NATUR := (cAlsSe2)->E2_NATUREZ Else TRB->(RecLock ("TRB", .F.)) EndIf // Regra na validacao - Somente deverah ser preenchido quando nao for compensacao ou quando for e a formalizacao for 3. If ("S"$cComp .And. "3"$aInfComp[2]) .Or. ("N"$cComp) TRB->TRB_VLRPRI += (cAlsSe2)->E2_VALOR EndIf TRB->TRB_VLRMUL += aBaixa[4] TRB->TRB_VLRJUR += aBaixa[3] TRB->TRB_VLRPAG += aBaixa[6] //Somo o desconto pois a DCTF nao considera se estiver embutido na baixa TRB->(MsUnLock ()) EndIf Return (aInfComp) /* Programa: RetComp Autor: Microsiga Data: 31/03/2006 Descricao: Retorna valores necessario para a geracao do Registro 12 (Compensação) Observacao: Ao passar as informacoes do titulo TX em processamento, verifico se possui baixa por compensação, se houver, atraves dos campos E5_DOCUMEN, E5_FORNADT e E5_LOJAADT posiciono no titulo que o compensou e retorno as informacoes de FORMALIZACAO e NUMERO DE PROCESSO do titulo de compensacao Parametros: cPrefixo -> Prefixo do titulo TX cNumero -> Numero do titulo TX cParcela -> Parcela do titulo TX cTipo -> Tipo do titulo TX cClifor -> Codigo do fornecedor do titulo TX cLoja -> Loja do fornecedor do titulo TX Retorno: aRet -> Array contendo as informacoes de Formalizacao e Numero Processo para o registro 12. */ Static Function RetComp(cPrefixo, cNumero, cParcela, cTipo, cCliFor, cLoja, aInfComp) Local nTamTit := TamSx3("E5_PREFIXO")[1]+TamSx3("E5_NUMERO")[1]+TamSx3("E5_PARCELA")[1]+TamSx3("E5_TIPO")[1] Local aMVCMPSE2 := &(GetNewPar ("MV_CMPSE2", "{}")) If SE5->(FieldPos ("E5_FORNADT"))==0 .Or. SE5->(FieldPos ("E5_LOJAADT"))==0 .Or. Len (aMVCMPSE2)==0 aInfComp := {"N","", "", .T.} Return(aInfComp) EndIf DbSelectArea("SE5") SE5->(DbSetOrder (7)) If(SE5->(DbSeek(xFilial("SE5")+cPrefixo+cNumero+cParcela+cTipo+cCliFor+cLoja))) Do While !SE5->(Eof()) .And. cPrefixo+cNumero+cParcela+cTipo+cCliFor+cLoja==SE5->E5_PREFIXO+SE5->E5_NUMERO+SE5->E5_PARCELA+SE5->E5_TIPO+SE5->E5_CLIFOR+SE5->E5_LOJA If(SE5->E5_MOTBX=="CMP") DbSelectArea("__SE2") __SE2->(DbSetOrder (1)) If(__SE2->(DbSeek(xFilial("SE2")+SubStr(SE5->E5_DOCUMEN, 1, nTamTit)+SE5->E5_FORNADT+SE5->E5_LOJAADT))) aInfComp[2] := &("__SE2->"+aMVCMPSE2[1]) //Formalizacao do Pedido aInfComp[3] := &("__SE2->"+aMVCMPSE2[2]) //Numero do PERDCOMP ou PROCESSO aInfComp[1] := "S" aInfComp[4] := .F. Exit EndIf EndIf SE5->(DbSkip()) EndDo EndIf Return(.T.)
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas