Home

Linha Microsiga Protheus

Páginas filhas
  • Compensação automática entre Carteiras (FINA450)

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Wiki Markup
||Descrição|| Implementada a utilização automática da rotina de Compensação entre Carteiras (FINA450).  
||Observações|| FINA450(nPosArotina,aAutoCab,nOpcAuto)
-aAutoCab - Array utilizado para enviar dados referentes ao processo. Estes dados são o equivalente aos dados preenchidos na tela de filtro manual, como:
1)Data Inicial: Data de Vencimento Real Inicial para filtrar os títulos.
2)Data Final: Data de Vencimento Real Final para filtrar os títulos.
3)Valor limite: Valor limite para a compensação. Esta informação é utilizada para filtrar ou não os títulos até o valor informado.
4)Código do Cliente e loja: Código do cliente/loja a partir do qual serão filtrados os títulos para a compensação.
5)Código do Fornecedor e loja: Código do fornecedor/loja a partir do qual serão filtrados os títulos para a compensação.
6)Moeda: Código da moeda dos títulos a serem utilizados na compensação.
7)Débito ou Crédito: 
8)Títulos Futuros
9)Chave de Títulos a Receber (Array com Chave dos títulos a receber que serão compensados):
    SE1->E1_FILIAL+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1->E1_TIPO
10)Chave de Títulos a Pagar (Array com Chave dos títulos a Pagar que serão compensados)
     SE2->E2_FILIAL+SE2->E2_PREFIXO+SE2->E2_NUM+SE2->E2_PARCELA+SE2->E2_TIPO+SE2->E2_FORNECE+SE2->E2_LOJA

-nOpcAuto - Opção do Menu a ser executado automaticamente.
3 = Compensação

Observações: a Compensação automática entre carteiras somente realiza a baixa do valor total do título.
||Exemplos||#include "rwmake.ch"
 
User Function Auto450()
 
Local aAutoCab := {        {"AUTDVENINI450", cTod('31/08/11')         , nil},;
                           {"AUTDVENFIM450", cTod('31/08/11')               , nil},;
                           {"AUTNLIM450"     , 10000                 {"AUTDVENFIM450", cTod('31/08/11')               , nil},;
                           {"AUTCCLI450"       , "000001"                              , nil},;
                             {"AUTNLIM450AUTCLJCLI"     , 10000    , "01"                                 , nil},;
                           {"AUTCFOR450"     , "000001"                          , nil},;
                           {"AUTCLJFOR"        , {"AUTCCLI45001"       , "000001"                          , nil},;
                           {"AUTCMOEDA450"  , "01"                               , nil},;                                {"AUTCLJCLI"    
      , "01"                    {"AUTNDEBCRED" , 1           , nil},;
                            ,  nil},;
                                                      {"AUTLTITFUTURO", .F.          {"AUTCFOR450"     , "000001"                          , nil},;
                           {"AUTARECCHAVE" , {}                                     , nil},;
                           {"AUTCLJFORAUTAPAGCHAVE" , {}      , "01"                                 , nil},;
                                                                                              {"AUTCMOEDA450"  , "01"                               , nil},;                                    
                                                                                              {"AUTNDEBCRED" , 1                                        , nil},;
                                                                                              {"AUTLTITFUTURO", .F.                                      , nil},;
                                                                                              {"AUTARECCHAVE" , {}                                     , nil},;
                                                                                              {"AUTAPAGCHAVE" , {}                                     , nil}}
 
Private lMsHelpAuto := .T.
Private lMsErroAuto := .F.
                    
                 
                                                    
                                       // Dados do titulo a receber
                                       SE1->( dbSetOrder( 1 ) )
                                       SE1->( MsSeek( xFilial( "SE1" ) +                PadR( " " , TamSX3( "E1_PREFIXO" )[ 1 ] ) + ;
                                                                                                                                                                            PadR( "REC1", TamSX3( "E1_NUM"     )[ 1 ] ) + ;
                                                                                                                                                                            PadR( " " , TamSX3( "E1_PARCELA" )[ 1 ] ) + ;
                                                                                                                                                                            PadR( "NF " , TamSX3( "E1_TIPO"    )[ 1 ] ) ) )
                                      
                                       AAdd( aAutoCab[11,2], { xFilial( "SE1" ) +   PadR( " " , TamSX3( "E1_PREFIXO" )[ 1 ] ) + ;
                                                                                                                                                                                                            PadR( "REC1", TamSX3( "E1_NUM"     )[ 1 ] ) + ;
                                                                                                                                                                                                            PadR( " " , TamSX3( "E1_PARCELA" )[ 1 ] ) + ;
                                                                                                                                                                                                            PadR( "NF " , TamSX3( "E1_TIPO"    )[ 1 ] ) } )
                                                                                                                                                                           
                                       // Dados do titulo a pagar
                                       SE2->( dbSetOrder( 1 ) )
                                       SE2->( MsSeek( xFilial( "SE2" ) +                PadR( " "                , TamSX3( "E2_PREFIXO" )[ 1 ] ) + ;
                                                                                                                                                                            PadR( "PAG1"        , TamSX3( "E2_NUM"     )[ 1 ] ) + ;
                                                                                                                                                                            PadR( " "                , TamSX3( "E2_PARCELA" )[ 1 ] ) + ;
                                                                                                                                                                            PadR( "NF "            , TamSX3( "E2_TIPO"    )[ 1 ] ) + ;
                                                                                                                                                                            PadR( "000001"     , TamSX3( "E2_FORNECE" )[ 1 ] ) + ;
                                                                                                                                                                            PadR( "01"                             , TamSX3( "E2_LOJA"    )[ 1 ] ) ) )
                                      
                                       AAdd( aAutoCab[12,2], { xFilial( "SE2" ) +  PadR( " "                , TamSX3( "E2_PREFIXO" )[ 1 ] ) + ;
                                                                                                                                                                                                            PadR( "PAG1"        , TamSX3( "E2_NUM"     )[ 1 ] ) + ;
                                                                                                                                                                                                            PadR( " "                , TamSX3( "E2_PARCELA" )[ 1 ] ) + ;
                                                                                                                                                                                                           PadR( "NF "            , TamSX3( "E2_TIPO"    , nil}}
Private lMsHelpAuto := .T.
Private lMsErroAuto := .F.
	// Dados do titulo a receber
    SE1->( dbSetOrder( 1 ) )
    SE1->( MsSeek( xFilial( "SE1" ) + PadR( " "      , TamSX3( "E1_PREFIXO" )[ 1 ] ) + ;
									  PadR( "REC1"   , TamSX3( "E1_NUM"     )[ 1 ] ) + ;
						              PadR(                          " "      , TamSX3( "E1_PARCELA" )[ 1 ] ) + ;
                                      PadR( "NF "    , TamSX3( "E1_TIPO"    )[ 1 ] ) ) )
    AAdd( aAutoCab[11,2], { xFilial( "SE1" ) +   PadR( " "     , TamSX3( "E1_PREFIXO" )[ 1 ] ) + ;
                                                 PadR( "000001REC1"     , TamSX3( "E2E1_FORNECENUM"     )[ 1 ] ) + ;
                                                 PadR( " "     , TamSX3( "E1_PARCELA" )[ 1 ] ) + ;
                                                 PadR( "NF "   , TamSX3( "E1_TIPO"    )[ 1 ] ) } )
    // Dados do titulo a pagar
    SE2->( dbSetOrder( 1 ) )
    SE2->( MsSeek( xFilial( "SE2" ) + PadR( " "          , TamSX3( "E2_PREFIXO" )[ 1 ] ) + ;
                                      PadR( "PAG1"       , TamSX3( "E2_NUM"     )[ 1 ] PadR( "01" ) + ;
                                      PadR( " "           , TamSX3( "E2_LOJAPARCELA"    )[ 1 ] ) }+ );
                                      PadR( "NF "        , TamSX3( "E2_TIPO"    )[ 1 ] ) + ;
                                      PadR( "000001"     , TamSX3( "E2_FORNECE"                  )[ 1 ] ) + ;
                                      PadR( "01"         
, TamSX3( "E2_LOJA"    )[ 1 ] ) ) )
    AAdd( aAutoCab[12,2], { xFilial( "SE2" ) +  PadR( " "          , TamSX3( "E2_PREFIXO"  MSExecAuto({|x,y,z| Fina450(x,y,z)}, nil , aAutoCab , 3 )
)[ 1 ] ) + ;
                                          
      PadR( "PAG1"       , TamSX3( "E2_NUM"     )[ 1 ] ) + ;
             If !lMsErroAuto
                                  PadR( " "          , msgalertTamSX3("Incluido com sucesso! ") "E2_PARCELA" )[ 1 ] ) + ;
                                               confirmsx8()
  PadR( "NF "        , TamSX3( "E2_TIPO"    )[ 1 ] ) + ;
                   Else
                             PadR( "000001"     , TamSX3( "E2_FORNECE" )[ 1 ] ) + ;
    msgalert("Erro na inclusao!")
                                          PadR( "01"    rollbacksx8()
     , TamSX3( "E2_LOJA"    )[ 1 ] ) } )
	MSExecAuto({|x,y,z| Fina450(x,y,z)}, nil , aAutoCab , 3 )
    If !lMsErroAuto
        msgalert("Incluido com sucesso! ")
        MostraErroconfirmsx8()
    Else
        msgalert("Erro na inclusao!")
        rollbacksx8()
        MostraErro()
         EndIf

||Preview|| 
||Veja também|| 
||Idioma|| Português(Brasil)
||Versões|| Microsiga_Protheus10_e_Microsiga_Protheus11
||Sistemas Operacionais Suportados||Todos
||Compatível com as Bases de Dados||Todas
||Updates|| 
||Parâmetros|| 
||Retorno|| 
||Eventos de chamada do Ponto de Entrada|| 
||Variáveis|| 
||Programa Fonte|| FINA450.PRX