Bom dia, amigos! Estou com uma dificuldade aqui numa customização. Fiz um programa para copiar títulos do contas a pagar. Antes meu programa copiava e contabilizava normalmente. De um tempo pra cá parou de contabilizar. Sei que a cópia de título não é das melhores práticas, mas não achei nenhuma outra forma de fazer isso. Segue abaixo o exemplo do fonte:
OBS.: sei que preciso mudar a manipulação para migrar a release. Já estamos trabalhando nisso.
User Function CopiaSE2()
Local i
Local aParam := {} //Validações
Local aCpos := {} //Array com os campos que podem ser editados
AAdd(aParam,{|| U_CargSE2() }) //Bloco de código que será processado antes da exibição das informações na tela
AAdd(aParam,{|| .T. }) //Bloco de código para processamento na validação da confirmação das informações
AAdd(aParam,{|| .T. }) //Bloco de código que será executado dentro da transação da AxFunction()
AAdd(aParam,{|| .T. }) //Bloco de código que será executado fora da transação da AxFunction()
For i := 1 To SE2->(FCount())
IF !Alltrim(SE2->(FieldName(i))) $ 'E2_FILIAL,E2_FORNECE,E2_LOJA'
aAdd(aCpos,SE2->(FieldName(i)))
EndIf
Next i
AxInclui('SE2',SE2->(Recno()),3,/*aAcho*/,/*cFunc*/,aCpos,"U_FValOk()",/*lF3*/,/*cTransact*/,/*aButtons*/,aParam,/*aAuto*/,/*lVirtual*/,/*lMaximized*/)
Return
User Function CargSE2()
Local i
For i := 1 to SE2->(FCount())
M->&(SE2->(FieldName(i))) := SE2->(FieldGet(i))
Do Case
Case "E2_BAIXA" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := CtoD('')
Case "E2_BCOPAG" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := ''
Case "E2_MOVIMEN" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := CtoD('')
Case "E2_SALDO" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := SE2->E2_VALOR
Case "E2_VALLIQ" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := 0
Case "E2_DATALIB" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := CtoD('')
Case "E2_USUALIB" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := ''
Case "E2_TITPAI" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := ''
Case "E2_MSIDENT" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := ''
Case "E2_STATLIB" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := ''
Case "E2_ORIGEM" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := 'FINA050'
Case "E2_LA" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := ''
Case "E2_RATEIO" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := 'N'
Case "E2_MULTNAT" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := '2'
Case "E2_ARQRAT" $ SE2->(FieldName(i))
M->&(SE2->(FieldName(i))) := ''
EndCase
Next i
Return .T.
User Function FValOk()
Local lRet := .T.
SE2->(DbSetOrder(1))
IF SE2->(MsSeek(xFilial("SE2") + M->E2_PREFIXO + M->E2_NUM + M->E2_PARCELA + M->E2_TIPO + M->E2_FORNECE + M->E2_LOJA))
MsgInfo("Título já cadastrado!")
lRet := .F.
Else
IF "MATA" $ SE2->E2_ORIGEM .and. Alltrim(SE2->E2_TIPO) $ 'TX,ISS,INS,PIS,COF,'
MsgInfo("Título não pode ser copiado!")
lRet := .F.
Endif
Endif
Return lRet