PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Troca de filial na MATA103
Versão:
12.1.17
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário IGORDS IGORDS em 25/07/2019, 18:40 h
Local: SC  Registro: 06/05/2016  Postagens: 12
Olá, pessoal!


Tenho uma rotina de importação de documento de entrada com o ExecAuto na MATA103.

Ocorre que, quando uma filial que compra, mas quem paga é a matriz, eu tenho que pegar os produtos para cadastrar da filial destinatária que fez a compra.

A regra, é quando o tomador é a matriz mas quem comprou foi alguma filial, o produto a ser cadastrado é da filial e não da matriz.

Alguém sabe me dizer como que faço pra trocar a filial somente dos itens?

Tentei usar o cFilAnt, fazendo backup da filial anterior, depois setar a filial que comprou e retornar a filial anterior.


Segue código:


Static Function GeraConhec(lLote)

     Local aCabec     := {}
     Local aItens     := {}
     Local cEst       := ""
     Local cDoc       := ""
     Local cProdFrete := AllTrim(GetNewPar("MV_XGTFRTE", ""))
     Local cTpCTEnt   := AllTrim(GetNewPar("MV_XSNTPCT", "C"))
     Local lConfAtu   := .T. //lConfere
     Local lSucess    := .T.
     Local nItem      := 0
     Local nPosAgt    := AScan(aCab, {|x| x[1] == "MV_PAR17"})
     Local nPosCod    := 0
     Local nPosCon    := AScan(aCab, {|x| x[1] == "MV_PAR31"})
     Local nPosEsp    := AScan(aCab, {|x| x[1] == "F1_ESPECIE"})
     Local nPosNat    := AScan(aCab, {|x| x[1] == "Natureza"})
     Local nPosTes    := AScan(aCab, {|x| x[1] == "MV_PAR27"})
     Local nTamItem   := TamSX3("D1_ITEM")[1]
     Local nTotPond   := 0
     Local nTotProd   := 0
     Local nVlConhe   := 0
     Local nVlPonde   := 0
     Local aSF8       := {}
     Local nI
     Local aIcms
     Local cTpCte     := "N"
     //Local cDTpCTe    := "N - Normal"
     Local cDTpCTe    := "N"
     Local cforPag    := ""
     
     Local nPosVUnit := 4
     Local nPosVTot   := 5
     
     Local cTransp    := ""
     Local cLojTran   := ""
     Local lAchouSF8 := .F.
     
     //Filiais
     Private cFilAtu := cFilAnt //Grava a Filial corrente
     
     Private _aItemOri      := {}
     Private lAutoErrNoFile := .T.
     Private lMsErroAuto    := .F.
     Private lMsHelpAuto    := .F.
     Private cXDForPag      := "F-FOB"
     
     Default lLote          := .F.
     
     //Pega CGC do Emitente e destinatário
     If IsNodeCTe(oXml, "_InfCte:_emit:_CNPJ")
          
          cCGCEmit := AllTrim(GetNodeCTe(oXml, "_InfCte:_emit:_CNPJ:Text"))
          
     Else
     
          cCGCEmit := AllTrim(GetNodeCTe(oXml, "_InfCte:_emit:_CPF:Text"))
          
     EndIf
          
     If !IsCteOS(oXml)
          
          If IsNodeCTe(oXml, "_InfCte:_dest:_CNPJ")
          
               cCGCDest := AllTrim(GetNodeCTe(oXml, "_InfCte:_dest:_CNPJ:Text"))
               
          Else
          
               cCGCDest := AllTrim(GetNodeCTe(oXml, "_InfCte:_dest:_CPF:Text"))
               
          EndIf
          
     EndIf
     
     // TIPO DE CTE
     If IsNodeCTe(oXml, "_infCte:_ide:_tpCTe")
     
          cTpCte := GetNodeCTe(oXml, "_infCte:_ide:_tpCTe:Text")
          
          Do Case
          
               Case cTpCte == "0"
                    
                    //cDTpCTe := "N - Normal"
                    cDTpCTe := "N"
                    
               Case cTpCte == "1"
                    
                    //cDTpCTe := "C - Complemen.Valores"
                    cDTpCTe := "C"
                    
               Case cTpCte == "2"
                    
                    //cDTpCTe := "A - Anula.Valores"
                    cDTpCTe := "A"
                    
               Case cTpCte == "3"
                    
                    //cDTpCTe := "S - Substituto"
                    cDTpCTe := "S"
                    
          EndCase
          
     EndIf
     
     // SE É FOB OU CIF
     /*If IsNodeCTe(oXml, "_infCte:_ide:_forPag")
     
          cforPag := GetNodeCTe(oXml, "_infCte:_ide:_forPag:Text")
          
          If cforPag == "0" //.Or. cforPag == "1" .Or. cforPag == "2"
          
               cXDForPag := "C-CIF"
                    
          EndIf
          
     EndIf*/
     
     
     // SE FOR GERAÇÃO DE LOTE, NÃO ABRE TELA DE CONFERÊNCIA
     If lLote
     
          lConfAtu := GetNewPar("MV_XGTCOLT", .T.)
          
     Else
     
          //-- Valida existencia da TES a utilizar no CTe
          If Empty(M->&(_cCmp1 + "_TES")) .Or. !SF4->( dbSeek(xFilial("SF4") + M->&(_cCmp1 + "_TES")) )
          
               Aviso("Aviso", "Deve ser informado um TES válido.", {"Ok"}, 2)
               Return .F.
               
          EndIf
          
          //-- Se TES gera dulp., valida existencia da cond. pgto a utilizar no CTe
          If SF4->F4_DUPLIC == "S" .And. (Empty(M->&(_cCmp1 + "_CONDPG")) .Or. !SE4->( dbSeek(xFilial("SE4") + M->&(_cCmp1 + "_CONDPG")) ))
          
               Aviso("Aviso", "O TES gera duplicata, portanto, deve-se informar uma condição de pagamento válida.", {"Ok"}, 2)
               Return .F.
               
          EndIf
          
          If Empty(M->&(_cCmp1 + "_CONDPG")) .Or. !SED->( dbSeek(xFilial("SED") + M->&(_cCmp1 + "_NATFIN")) )
          
               Aviso("Aviso", "Deve ser informada uma natureza fiscal válida.", {"Ok"}, 2)
               Return .F.
               
          EndIf
          
          cTes   := M->&(_cCmp1 + "_TES")
          cCond := M->&(_cCmp1 + "_CONDPG")
          cNatur := M->&(_cCmp1 + "_NATFIN")
          
     EndIf
     
     //lMsHelpAuto := .T.
     lConfirm := .T.
     
     If IsNodeCTe(oXml, "_infCte:_ide:_UFIni") .And. !(cFilAnt $ GetNewPar("MV_ZGOFESC", ""))
          
          cEst := GetNodeCTe(oXml, "_infCte:_ide:_UFIni:Text")
          
     Else
          
          cEst := Posicione("SA2", 1, xFilial("SA2") + (_cTab1)->&(_cCmp1 + "_CODEMI") + (_cTab1)->&(_cCmp1 + "_LOJEMI"), "A2_EST")
          
     EndIf
/* ####################################################################### *\
|| #                          CABEÇALHO DA NOTA                          # ||
\* ####################################################################### */
     aCabec := {{"F1_DOC"    , (_cTab1)->&(_cCmp1 + "_DOC")   , Nil, Nil}, ;
                {"F1_SERIE" , (_cTab1)->&(_cCmp1 + "_SERIE") , Nil, Nil}, ;
                {"F1_FORNECE", (_cTab1)->&(_cCmp1 + "_CODEMI"), Nil, Nil}, ;
                {"F1_LOJA"   , (_cTab1)->&(_cCmp1 + "_LOJEMI"), Nil, Nil}, ;
                {"F1_COND"   , cCond                          , Nil, Nil}, ;
                {"F1_EMISSAO", (_cTab1)->&(_cCmp1 + "_DTEMIS"), Nil, Nil}, ;
                {"F1_DTDIGIT", dDataBase                      , Nil, Nil}, ;
                {"F1_TIPO"   , cTpCTEnt                      , Nil, Nil}, ;
                {"F1_ESPECIE", cEspCTe                        , Nil, Nil}, ;
                {"F1_FORMUL" , IIf((_cTab1)->&(_cCmp1 + "_FORMP"), "S", "N")       , Nil, Nil}, ;
                {"F1_CHVNFE" , (_cTab1)->&(_cCmp1 + "_CHAVE") , Nil, Nil}, ;
                {"F1_TPFRETE", cXDForPag                      , Nil, Nil}, ;
                  {"F1_TPCTE" , cDTpCTe                        , Nil, Nil}, ;                
                {"F1_MODAL" , "01"                           , Nil, Nil}, ;
                {"E2_NATUREZ", cNatur                         , Nil, Nil}, ;
                {"F1_EST"    , cEst                           , Nil, Nil} ;
               }
     
     If lZTpCompl .And. cTpCTEnt == "C"
          
          AAdd(aCabec, {})
          AIns(aCabec, 9)
          
          aCabec[9] := {"F1_TPCOMPL", IIf(cTpCte == "C", "1", "3") , Nil, Nil}
          
     EndIf
     
     If SF1->( FieldPos("F1_MUORITR") ) > 0
          
          //(_cTab1)->&(_cCmp1 + "_CHAVE")
          
          AAdd(aCabec, {"F1_UFORITR", GFE065RUF(Left((_cTab1)->&(_cCmp1 + "_CIDINI"), 2), 2), Nil, Nil})
          AAdd(aCabec, {"F1_UFDESTR", GFE065RUF(Left((_cTab1)->&(_cCmp1 + "_CIDFIM"), 2), 2), Nil, Nil})
          AAdd(aCabec, {"F1_MUORITR", Right((_cTab1)->&(_cCmp1 + "_CIDINI"), 5), Nil, Nil})
          AAdd(aCabec, {"F1_MUDESTR", Right((_cTab1)->&(_cCmp1 + "_CIDFIM"), 5), Nil, Nil})
          
     EndIf
     
     nPosVal := AScan(aCab, {|x| x[1] == "MV_PAR21"}) // VALOR DO CONHECIMENTO

     //Define filial
     //If cCgcEmit <> cCgcDest
          //cFilAnt := RetFili(cCgcDest)
     //EndIf
          
          
     // VALIDA PRODUTO PASSADO POR PARÂMETRO
     dbSelectArea("SB1")
     SB1->( dbSetOrder(1) )
     
     If !Empty(cProdFrete) .And. !SB1->( dbSeek(xFilial("SB1") + cProdFrete) )
     
          Aviso("Produto padrão de Frete", "Deve ser informado no parâmetro MV_XGTFRTE o produto padrão que será utilizado para a geração dos itens do conhecimento de frete.", {"Ok"}, 2)
          Return .F.
          
     EndIf
     
     aIcms := XmlCteIcms(oXml)
     
     // NOTAS SELECIONADAS
     For nA := 1 To Len(aNotasAux)
     
/* ####################################################################### *\
|| #                                 SF1                                 # ||
|| #                     CABECALHO DAS NF DE ENTRADA                     # ||
\* ####################################################################### */
          dbSelectArea("SF1")
          // Numero + Serie + Fornecedor + Loja + Tipo da Nota
          SF1->( dbSetOrder(1) )
          
          If SF1->( dbSeek(aNotasAux[nA][1][2]) )
          
               AAdd(aSF8, {SF1->F1_DTDIGIT, SF1->F1_DOC, SF1->F1_SERIE, SF1->F1_FORNECE, SF1->F1_LOJA})
               //       *Num. Docto. *Serie          *Cliente          *Loja
               cDoc := (SF1->F1_FILIAL + SF1->F1_DOC + SF1->F1_SERIE + SF1->F1_FORNECE + SF1->F1_LOJA)
               
               If Left(SF1->F1_ESPECIE, 3) $ "CTE" .And. !Empty(SF1->F1_TPFRETE)
                    
                    If SF1->F1_TPFRETE == "C"
                         
                         cXDForPag := "C-CIF"
                         aCabec[AScan(aCabec, {|x| x[1] == "F1_TPFRETE"})][2] := cXDForPag
                         
                    EndIf
                    
               EndIf
                         
/* ####################################################################### *\
|| #                                 SD1                                 # ||
|| #                      ITENS DAS NF DE ENTRADA                      # ||
\* ####################################################################### */
               dbSelectArea("SD1")
               SD1->( dbSetOrder(1) )
               
               If SD1->( dbSeek(cDoc) )
               
                    While SD1->( !Eof() ) .And. (SD1->D1_FILIAL + SD1->D1_DOC + SD1->D1_SERIE + SD1->D1_FORNECE + SD1->D1_LOJA) == cDoc
                    
                         // BUSCA PRODUTO NO ARRAY
                         nPosCod      := aScan(aItens, {|x| x[2][2] == SD1->D1_COD})
                         
/* ####################################################################### *\
|| #                            ITENS DA NOTA                            # ||
\* ####################################################################### */
                         
                         If Empty(cProdFrete) .Or. (!Empty(cProdFrete) .And. Empty(aItens))
                              
                              AAdd(aItens, {{"D1_ITEM"   , STRZERO(++nItem, nTamItem), Nil}, ;
                                            {"D1_COD"    , SD1->D1_COD               , Nil}, ;
                                            {"D1_UM"     , SD1->D1_UM               , Nil}, ;
                                            {"D1_QUANT" , 1                         , Nil}, ;
                                            {"D1_VUNIT" , SD1->D1_TOTAL             , Nil}, ;
                                            {"D1_TOTAL" , SD1->D1_TOTAL             , Nil}, ;
                                            {"D1_TIPO"   , cTpCTEnt                  , Nil}, ;
                                            {"D1_SERIE" , SD1->D1_SERIE             , Nil}, ;
                                            {"D1_TES"    , cTes                      , Nil}, ;
                                            {"D1_PICM"   , aIcms[3]                  , Nil}, ;
                                            {"AUTDELETA" , "N"                      , Nil} ;
                                           })
                              
                              //{"D1_NFORI" , SD1->D1_DOC               , Nil}, ;
                              //{"D1_SERIORI", SD1->D1_SERIE             , Nil}, ;
                              
                              If cTpCTEnt == "C"
                                   
                                   If GetNewPar("MV_ZSNCTCE", .F.)
                                        
                                        AAdd(ATail(aItens), {"D1_CONTA", SD1->D1_CONTA, Nil})
                                        AAdd(ATail(aItens), {"D1_CC"   , SD1->D1_CC, Nil})
                                        
                                   EndIf
                                   
                                   ADel(ATail(aItens), 4)
                                   ASize(ATail(aItens), Len(ATail(aItens)) - 1)
                                   
                                   AAdd(ATail(aItens), {"D1_NFORI", SD1->D1_DOC, Nil})
                                   AAdd(ATail(aItens), {"D1_SERIORI", SD1->D1_SERIE, Nil})
                                   AAdd(_aItemOri, PADR(SD1->D1_ITEM, nTamItem))
                                   
                              ElseIf cTpCTEnt == "N"
                                   
                                   If GetNewPar("MV_ZSNCTCS", .F.)
                                        
                                        AAdd(ATail(aItens), {"D1_CONTA", SD1->D1_CONTA, Nil})
                                        AAdd(ATail(aItens), {"D1_CC"   , SD1->D1_CC, Nil})
                                        
                                   EndIf
                                   
                                   nPosVUnit := 5
                                   nPosVTot := 6
                                   
                                   If GetNewPar("MV_XGTCTSO", .F.)
                                        
                                        AAdd(ATail(aItens), {"D1_NFORI", SD1->D1_DOC, Nil})
                                        AAdd(ATail(aItens), {"D1_SERIORI", SD1->D1_SERIE, Nil})
                                        AAdd(_aItemOri, PADR(SD2->D2_ITEM, nTamItem))
                                        
                                   EndIf
                                   
                              EndIf
                         
                         EndIf
                         
                         // SÓ ADICIONA UM ITEM CASO TIVER O PRODUTO PADRÃO POR PARÂMETRO E O PRODUTO FOR VÁLIDO
                         If !Empty(cProdFrete)
                         
                              // DADOS DO PRODUTO PADRÃO
                              ATail(aItens)[2][2]        := SB1->B1_COD
                              ATail(aItens)[3][2]        := SB1->B1_UM
                              ATail(aItens)[nPosVUnit][2] := SF1->F1_VALMERC
                              ATail(aItens)[nPosVTot][2] := SF1->F1_VALMERC
                              
                              nTotProd += SF1->F1_VALMERC
                              
                              Exit
                              
                         Else
                         
                              // SOMA O TOTAL DOS PRODUTOS
                              nTotProd += SD1->D1_TOTAL
                              
                         EndIf
                         
                         SD1->( dbSkip() )
                         
                    EndDo
                    
               EndIf
               
               SD1->( dbCloseArea() )
               
          EndIf
          
          SF1->( dbCloseArea() )
          
     Next nA
     
/* ####################################################################### *\
|| #                           RATEIA O VALOR                            # ||
\* ####################################################################### */
     nVlConhe := aCab[nPosVal][2]
     
     If Empty(nVlConhe)
          
          nVlConhe := aIcms[4]
          aCabec[8][2] := "I"
          
     EndIf
     
     For nA := 1 To Len(aItens)
          
          If nA > Len(aItens)
               
               Exit
               
          EndIf
          
          //          VALOR DO FRETE   VALOR TOTAL        TOTAL DOS ITENS
          nVlPonde := Round(nVlConhe * aItens[nA][5][2] / nTotProd, 2) // (VALOR * CRITÉRIO / TOTAL DO CRITÉRIO = VALOR PONDERADO)
          
          aItens[nA][nPosVUnit][2] := nVlPonde // VALOR UNITÁRIO
          aItens[nA][nPosVTot][2] := nVlPonde // VALOR TOTAL
          
          nTotPond += nVlPonde
          
          If nVlPonde == 0
               
               aDel(aItens, nA)
               aSize(aItens, Len(aItens) - 1)
               
               nA--
               
          EndIf
          
     Next nA
     
     If (nTotPond - nVlConhe) > 0
     
          ATail(aItens)[nPosVUnit][2] -= nTotPond - nVlConhe
          ATail(aItens)[nPosVTot][2] -= nTotPond - nVlConhe
          
     ElseIf (nTotPond - nVlConhe) < 0
     
          ATail(aItens)[nPosVUnit][2] += Abs(nTotPond - nVlConhe)
          ATail(aItens)[nPosVTot][2] += Abs(nTotPond - nVlConhe)
          
     EndIf
     
     SB1->( dbCloseArea() )
     
     oSenLog:NewLine()
     oSenLog:Add("-Cabeçalho do Conhecimento de Transporte enviado para a tentativa de importação:", 1)
     PrintArrLog(aCabec)
     oSenLog:Add("-Notas Fiscais vinculadas ao Conhecimento de Transporte para tentativa de importação:", 1)
     PrintArrNF(aItens)
     
/* ####################################################################### *\
|| #                            IMPORTANDO...                            # ||
\* ####################################################################### */
     //Begin Transaction
     
//**************************************************************************     
     
          MsAguarde({|| MsExecAuto({|x, y, z, w| MATA103(x, y, z, w)}, aCabec, aItens, 3, lConfAtu)}, "Importação", ;
                    "Importando Compl. de " + IIf(aCabec[8][2]=="C", "Preço/Frete...", "ICMS..."))
                 
//Volta filial corrente
     //cFilAnt := cFilAtu     
//**************************************************************************
          
          dbSelectArea("SF1")
          SF1->( dbSetOrder(1) )
          
          If !lMsErroAuto .And. !SF1->( dbSeek(xFilial("SF1") + (_cTab1)->&(_cCmp1 + "_DOC") + (_cTab1)->&(_cCmp1 + "_SERIE") + (_cTab1)->&(_cCmp1 + "_CODEMI") + (_cTab1)->&(_cCmp1 + "_LOJEMI")) )
          
               lConfirm := .F.
               lSucess := .F.
               
          ElseIf lMsErroAuto .And. !SF1->( dbSeek(xFilial("SF1") + (_cTab1)->&(_cCmp1 + "_DOC") + (_cTab1)->&(_cCmp1 + "_SERIE") + (_cTab1)->&(_cCmp1 + "_CODEMI") + (_cTab1)->&(_cCmp1 + "_LOJEMI")) )
          
               //DisarmTransaction()
               
               RecLock(_cTab1, .F.)
               
                    (_cTab1)->&(_cCmp1 + "_SIT") := "3"
                    (_cTab1)->&(_cCmp1 + "_ERRO") := MontaErro(GetAutoGrLog())
                    
               (_cTab1)->( MsUnlock() )
               
               oSenLog:Add("-Erro ao importar Conhecimento de Transporte: " + (_cTab1)->&(_cCmp1 + "_ERRO"), 1)
               
               If !lLote
               
                    ExibeErro()
                    
               EndIf
               
               lSucess := .F.
               
          Else
          
               RecLock(_cTab1, .F.)
               
                    (_cTab1)->&(_cCmp1 + "_SIT")    := "2"
                    (_cTab1)->&(_cCmp1 + "_ERRO")   := ""
                    (_cTab1)->&(_cCmp1 + "_ESPECI") := cEspCTe
                    (_cTab1)->&(_cCmp1 + "_TES")    := cTes
                    (_cTab1)->&(_cCmp1 + "_NATFIN") := cNatur
                    (_cTab1)->&(_cCmp1 + "_CONDPG") := cCond
                    (_cTab1)->&(_cCmp1 + "_DTIMP") := dDataBase
                    (_cTab1)->&(_cCmp1 + "_HRIMP") := Time()
                    (_cTab1)->&(_cCmp1 + "_USUIMP") := cUserName
                    
               (_cTab1)->( MsUnlock() )
               
               // FORÇA A GRAVAÇÃO DO TIPO DE CTE
               /*RecLock("SF1", .F.)
               
                    SF1->F1_TPCTE   := cTpCte
                    SF1->F1_TPFRETE := cforPag
                    
               SF1->( MsUnlock() )*/
               
               For nI := 1 To Len(aSF8)
                    
                    cTransp   := aCab[AScan(aCab, {|x| x[1] == "MV_PAR25"})][2]
                    cLojTran := aCab[AScan(aCab, {|x| x[1] == "MV_PAR26"})][2]
                    lAchouSF8 := .F.
                    
                    dbSelectArea("SF8")
                    SF8->( dbSetOrder(1) )
                    If SF8->( dbSeek(xFilial("SF8") + (_cTab1)->&(_cCmp1 + "_DOC") + (_cTab1)->&(_cCmp1 + "_SERIE") + cTransp + cLojTran) )
                         
                         While !SF8->( Eof() ) .And. SF8->F8_FILIAL == xFilial("SF8") .And. SF8->F8_NFDIFRE == (_cTab1)->&(_cCmp1 + "_DOC") .And. ;
                              SF8->F8_SEDIFRE == (_cTab1)->&(_cCmp1 + "_SERIE") .And. SF8->F8_TRANSP == cTransp .And. SF8->F8_LOJTRAN == cLojTran
                              
                              If SF8->F8_NFORIG == aSF8[nI][2] .And. SF8->F8_SERORIG == aSF8[nI][3] .And. SF8->F8_FORNECE == aSF8[nI][4] .And. SF8->F8_LOJA == aSF8[nI][5]
                                   
                                   lAchouSF8 := .T.
                                   
                                   Exit
                                   
                              EndIf
                              
                              SF8->( dbSkip() )
                              
                         EndDo
                         
                    EndIf
                    
                    If !lAchouSF8
                         
                         RecLock("SF8", .T.)
                         
                              SF8->F8_FILIAL     := xFilial("SF8")
                              // Informação do conhecimento
                              SF8->F8_NFDIFRE     := (_cTab1)->&(_cCmp1 + "_DOC")
                              SF8->F8_SEDIFRE     := (_cTab1)->&(_cCmp1 + "_SERIE")
                              SF8->F8_TRANSP     := cTransp
                              SF8->F8_LOJTRAN     := cLojTran
                              SF8->F8_TIPO     := "F"
                              // Informações da nota fiscal filha
                              SF8->F8_DTDIGIT := aSF8[nI][1]
                              SF8->F8_NFORIG     := aSF8[nI][2]
                              SF8->F8_SERORIG     := aSF8[nI][3]
                              SF8->F8_FORNECE     := aSF8[nI][4]
                              SF8->F8_LOJA     := aSF8[nI][5]
                              
                         SF8->( MsUnlock() )
                         
                    EndIf
                    
               Next nI
               
               oSenLog:Add("-Conhecimento de Transporte importado com sucesso." + (_cTab1)->&(_cCmp1 + "_ERRO"), 1)
               
               If !lLote
               
                    //Aviso("Aviso", "Conhecimento de Transporte importado com sucesso.", {"Ok"}, 2)
                    oDlgCTe:End()
                    
               EndIf
               
          EndIf
          
     //End Transaction
Return lSucess








Analista de Si

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ALVESSGU ALVESSGU em 26/07/2019, 08:31 h
Local: SP  Registro: 23/10/2013  Postagens: 8
Olá.

Neste caso não seria no próprio cadastro da Filial, cadastrar a pagadora como a matriz na SM0?

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário IGORDS IGORDS em 30/07/2019, 13:00 h
Local: SC  Registro: 06/05/2016  Postagens: 12
ALVESSGU,

O pagador por ser tanto a matriz como uma filial.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário CJCAMPOS CJCAMPOS em 30/07/2019, 14:10 h
Local: SP  Registro: 09/09/2009  Postagens: 143
Não seria entao o caso de vc compartilhar o Financeiro com todas as filiais ?

Existe varios campos para colocar a filial ..
e1_filial
e1_filorig
etc...

Já que o financeiro de um pode pagar o do outro..

Mas recomendo deixar a contabilidade exclusiva.. e o fiscal tb.


Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal