;** FT_TRANS *******************************************************************
;*  Rotina de Transferencia entre Empresas                                     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 01/02/2001 por Anivel Augusto Rodrigues
;Ultima Alteracao: 19/02/2005 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Quantidade Convertida
;Ultima Alteracao: 07/01/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Transferencia Custo Medio
;Ultima Alteracao: 11/08/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CFO Item
;Ultima Alteracao: 16/12/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CFO Item/Pega_CFOP
;Ultima Alteracao: 06/01/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cria_Ficha*()
;Ultima Alteracao: 08/11/2011 por Karina Andrade
;Motivo Alteracao: Ajustes campos de tributa‡Æo
;Ultima Alteracao: 28/03/2012 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes CFOP_Empresa para identifica‡Æo             
;Ultima Alteracao: 23/04/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ATIVEMPR para pega_CFOP                            
;Ultima Alteracao: 18/03/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CST_PIS/COFINS/IPI de entrada                      
;Ultima Alteracao: 02/05/2013 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes gravar notaec chave_acesso_nfe transferencia                   
;Ultima Alteracao: 23/08/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes controle de tabela abertas no sistema                     
;Ultima Alteracao: 31/12/2013 por Andrey Fillipe
;Motivo Alteracao: Inclusao dos campos Tipo de NF e Descricao Tipo NF
;Ultima Alteracao: 27/05/2016 por Bruno Carvalho 
;Motivo Alteracao: Adaptado processo para gera‡Æo do [Numero do Lancamento] "Interno"
;Ultima Alteracao: 07/07/2016 por Kamila Gomes                    
;Motivo Alteracao: Removido campo [FaturaC->Aliquota de ICMS] 
;Ultima Alteracao: 10/02/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao controle_Dia() NotaEC                   
;Ultima Alteracao: 31/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desconto item
;Ultima Alteracao: 16/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")
;Ultima Alteracao: 13/12/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Adicionado processo financerio da transferencia

;*******************************************************************************
;* Atualizacao Transferencias                                                  *
;*******************************************************************************
Proc TRANSFERENCIA()
Private NUMEROL, NE_ENCONTRADA, MES_EST, ANO_EST, 
        NPTIT, DP_ORDEM_transf, regp_entra_transf, regp_titulo_transf,
        CX_CONTA_CAIXA_transf, PLCONTA_transf

If Search("TRANSF",[Descricao da Destinacao])=0
   Then Return
EndIf
If [FaturaC->Tipo]<>"E"
   Then Return
EndIf
If [FaturaC->Tipo Movimento Estoque]<>"S"
   Then Return
EndIf
If [Codigo da Empresa]=[Codigo]
   Then Return
EndIf

{TableAdd} {\\Sistemas\\Estoque\\NotaEC}
{TableAdd} {\\Sistemas\\Estoque\\NotaEI}
If DP_GERA_DUPLICATA="S"
   then
        {TableAdd} {\\Sistemas\\Estoque\\NotaECP}
        {TableAdd} {\\Sistemas\\Ctapag\\Titulos}
endif

Moveto "\\Sistemas\\Estoque\\NotaEC"
Moveto [Codigo]
Locate IndexOrder By "NotaEC01" [FaturaC->Codigo da Empresa],
       NOTAFISC,SERIEFISC
If RetVal
   then NE_ENCONTRADA=True
   Else NE_ENCONTRADA=False
EndIf

If NE_ENCONTRADA
   Then NUMEROL=[\Sistemas\Estoque\NotaEC->Numero do Lancamento]

        Moveto "\\Sistemas\\Estoque\\NotaEI"
        Moveto [Numero do Lancamento]
        Locate NUMEROL
        If RetVal
           Then 
                MES_EST = AlinhM(StrVal(Month([\Sistemas\Estoque\NotaEC->Data de Entrada])),2)
                ANO_EST = StrVal(Year([\Sistemas\Estoque\NotaEC->Data de Entrada]))
                While True
                  Moveto "\\Sistemas\\Estoque\\SdEstq"
                  Locate [\Sistemas\Estoque\NotaEI->Codigo da Empresa],
                         [\Sistemas\Estoque\NotaEI->Codigo do Item], ANO_EST, MES_EST
                  If RetVal
                     Then While True
                            If Not IsLockRecord()
                               Then QuitLoop
                            EndIf
                          EndWhile

                          [Saldo Atual      ]=NDecimal([Saldo Atual      ]-[\Sistemas\Estoque\NotaEI->Quantidade ],3)
                          [Custo Total Atual]=NDecimal([Custo Total Atual]-([\Sistemas\Estoque\NotaEI->Custo Medio Unitario]*[\Sistemas\Estoque\NotaEI->Quantidade ]),2)
                          If ([Custo Total Atual]/[Saldo Atual])>0
                             Then [Ultimo Custo Atual]=NDecimal([Custo Total Atual]/[Saldo Atual],5)
                          EndIf
                          UnLockRecord
                  EndIf

                  Moveto "\\Sistemas\\Estoque\\NotaEI"
                  Del
                  If [Numero do Lancamento]<>NUMEROL
                     Then QuitLoop
                  EndIf
                EndWhile
        EndIf

        If DP_GERA_DUPLICATA="S"
           then
                NPTIT=0
                Moveto "\\Sistemas\\Estoque\\NotaECP"
                Moveto [Numero do Lancamento]
                Locate NUMEROL
                If RetVal
                   Then 
                        While True
                          NPTIT=NPTIT+1
                        
                          Del
                          If [Numero do Lancamento]<>NUMEROL
                             Then QuitLoop
                          EndIf
                        EndWhile
        
                        if NPTIT>0 then TransferenciaEstorna_CP() endif
                EndIf
        endif
        
        Moveto "\\Sistemas\\Estoque\\NotaEC"
        Del
EndIf

Moveto "\\Sistemas\\Estoque\\NotaEC"
While True
  End
  Moveto [Numero do Lancamento]
  If Numero_Lancamento("Interno","Locked_Down")
     Then NUMEROL = PROXLANCTO_NLANC
          Release Vars PROXLANCTO_NLANC
          quitloop
  EndIf    
EndWhile

[Codigo da Empresa        ]=[FaturaC->Codigo]
[Codigo                   ]=[FaturaC->Codigo da Empresa]
[Tipo de NF               ]="N"
[Descricao Tipo NF        ]="NORMAL"
[UF                       ]=[FaturaC->UF]
[Numero do Documento      ]=NOTAFISC
[Codigo do Documento      ]=CODFISC
[Tipo de Operacao         ]="T"
If SubStr([FaturaC->CFO],1,1)="5"
   Then [CFO]="1152"
   Else [CFO]="2152"
EndIf
[Data de Emissao          ]=[FaturaC->Data de Emissao]
[Data de Entrada          ]=[FaturaC->Data de Saida  ]
[Tipo CTR                 ]=[FaturaC->Frete por Conta          ]
[Tipo de Pagamento        ]=[FaturaC->Tipo de Pagamento        ]
[Codigo do Representante  ]=""
[Nome Fantasia Represent  ]=""
[Valor Mercadoria         ]=[FaturaC->Valor Mercadoria         ]
[Valor Servico            ]=[FaturaC->Valor Servico            ]
[Valor Desconto           ]=[FaturaC->Valor Desconto           ]
[Valor Mercadoria Liquido ]=[FaturaC->Valor Mercadoria Liquido ]
[Valor BCICMS             ]=[FaturaC->Valor BCICMS             ]
[Valor ICMS               ]=[FaturaC->Valor ICMS               ]
[Valor IPI                ]=[FaturaC->Valor IPI                ]
[Valor Nota Fiscal        ]=[FaturaC->Valor Nota Fiscal        ]
[Valor Despesas Acessorias]=[FaturaC->Valor Despesas Acessorias]
[Valor Substituicao ICMS  ]=[FaturaC->Valor Substituicao ICMS  ]
[Frete Incluso na Nota    ]=[FaturaC->Frete Incluso na Nota    ]
[Valor do Frete           ]=[FaturaC->Valor do Frete           ]
If [FaturaC->Aliquota BCICMS Frete]>0
   Then [Valor ICMS Frete]=NDecimal((([FaturaC->Valor do Frete]-(([FaturaC->Valor do Frete]*[FaturaC->Aliquota BCICMS Frete])/100))*[FaturaC->Aliquota de ICMS Frete])/100,2)
   Else [Valor ICMS Frete]=NDecimal(([FaturaC->Valor do Frete]*[FaturaC->Aliquota de ICMS Frete])/100,2)
EndIf
[Valor do Seguro          ]=[FaturaC->Valor do Seguro          ]
[Chave_Acesso_NFe         ]=[NotaC->Chave_Acesso_NFe           ]
[Sistema Gerador          ]="NF"

Controle_Dia()
UnLockrecord

Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]

  Moveto "\\Sistemas\\Estoque\\NotaEI"
  End
  Down

  [Numero do Lancamento    ]=NUMEROL
  [Sequencia do Lancamento ]=[FaturaI->Item da OF]
  [Codigo da Empresa       ]=[FaturaC->Codigo]
  [Codigo do Item          ]=[FaturaI->Codigo do Item]
  [Tipo do Item            ]=[FaturaI->Tipo do Item]
  [Descricao do Item       ]=[FaturaI->Descricao do Item]
  [Codigo da Cor_Tecido    ]=[FaturaI->Codigo da Cor_Tecido]
  [Descricao da Cor_Tecido ]=[FaturaI->Descricao da Cor_Tecido]
  [Tamanho                 ]=[FaturaI->Tamanho]
  [Quantidade              ]=[FaturaI->Quantidade]
  [Unidade Fiscal          ]=[FaturaI->Unidade Fiscal]
  [Preco Unitario          ]=[FaturaI->Preco Unitario]
  if [FaturaI->Tipo Desconto Item]="U"
     then
          [Taxa Desconto Unitario  ]=[FaturaI->Taxa Desconto Unitario]
          [Valor Desconto Unitario ]=[FaturaI->Valor Desconto Unitario]
  endif
  [Preco Total             ]=[FaturaI->Preco Total]
  [Preco Unitario Tabela   ]=[FaturaI->Preco Unitario Tabela]
  [Custo Medio Unitario    ]=[FaturaI->Preco Unitario]
;;;[Custo Medio Unitario    ]=[FaturaI->Custo Medio Unitario]
  [Valor Desconto Total    ] = NDecimal((([Preco Total]*TXDESCTO_TOTAL)/100),5)
;;; Falta Valor Acrescimo Total

  [Tributacao de IPI       ]=[FaturaI->Tributacao de IPI       ]
  [Aliquota Reduzida BCIPI ]=[FaturaI->Aliquota Reduzida BCIPI ]
  [Aliquota de IPI         ]=[FaturaI->Aliquota de IPI         ]
  [Valor do IPI            ]=[FaturaI->Valor do IPI            ]
  [IPI_CST                 ]=[FaturaI->IPI_CST                 ]
  [IPI_BC                  ]=[FaturaI->IPI_BC                  ]

  [Tributacao de ICMS      ]=[FaturaI->Tributacao de ICMS      ]
  [Aliquota Reduzida BCICMS]=[FaturaI->Aliquota Reduzida BCICMS]
  [Aliquota de ICMS        ]=[FaturaI->Aliquota de ICMS        ]
  [Valor do ICMS           ]=[FaturaI->Valor do ICMS           ]
  [ICMS_BC                 ]=[FaturaI->ICMS_BC                 ]
  [ICMS_ST_BC              ]=[FaturaI->ICMS_ST_BC              ]
  [ICMS_ST_Valor           ]=[FaturaI->ICMS_ST_Valor           ]
  [Tipo Tributacao         ]=[FaturaI->Tipo Tributacao         ]  
  [CSOSN                   ]=[FaturaI->CSOSN                   ]
  
  [Fator de Conversao      ]= 1
  [Quantidade Convertida   ]=[FaturaI->Quantidade]
  [Comissao do Item        ]=[FaturaI->Comissao do Item]

  ;* Seta Variaveis PegaCFOP
  Checa_CFOP      ="E"
  CFO_C           =[\Sistemas\Estoque\NotaEC->CFO       ]
  CFOP_TPITEM     =[Tipo do Item      ]
  CFOP_TRIBICMS   =[Tributacao de ICMS]
  CFOP_EMPRESA    =[\Sistemas\Estoque\NotaEC->Codigo da Empresa ]
  CFOP_ATIVEMPRESA=ATIVEMPR
  Play "\\Sistemas\\Exporta\\PegaCFOP"
  [CFO           ]=CFO_C

  Switch
    Case (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB"):
      [PIS_CST        ]="74"
      [PIS_Aliquota   ]=BlankNum()
      [PIS_BC         ]=BlankNum()
      [PIS_Valor      ]=BlankNum()
    
      [COFINS_CST     ]="74"
      [COFINS_Aliquota]=BlankNum()
      [COFINS_BC      ]=BlankNum()
      [COFINS_Valor   ]=BlankNum()
    OtherWise:
      Switch
        Case SYS_CODIGO_CLIENTE="0000":
        
        OtherWise:
          [PIS_CST        ]="74"
          [PIS_Aliquota   ]=BlankNum()
          [PIS_BC         ]=BlankNum()
          [PIS_Valor      ]=BlankNum()
        
          [COFINS_CST     ]="74"
          [COFINS_Aliquota]=BlankNum()
          [COFINS_BC      ]=BlankNum()
          [COFINS_Valor   ]=BlankNum()
      EndSwitch
  EndSwitch
  
  Switch
    Case [FaturaI->IPI_CST]="50" : [IPI_CST]="00"
    Case [FaturaI->IPI_CST]="51" : [IPI_CST]="01"
    Case [FaturaI->IPI_CST]="52" : [IPI_CST]="02"
    Case [FaturaI->IPI_CST]="53" : [IPI_CST]="03"
    Case [FaturaI->IPI_CST]="54" : [IPI_CST]="04"
    Case [FaturaI->IPI_CST]="55" : [IPI_CST]="05"
    Case [FaturaI->IPI_CST]="99" : [IPI_CST]="49"
  EndSwitch
  UnLockrecord

    ;---- Processo p/ utiliza‡Æo de REGRA ------------------------------------------
  Verifica_Emissao_Saida([FaturaC->Data de Emissao])
  Switch
    Case REGRA_DATA_ESTOQUE = "Antiga" : AUX_DATA = [FaturaC->Data de Saida  ]  
                                         If IsBlank(AUX_DATA) Then AUX_DATA=[FaturaC->Data de Emissao] EndIf
    OtherWise                          : AUX_DATA = [FaturaC->Data de Emissao]
  EndSwitch
  ;-------------------------------------------------------------------------------
  MES_EST = AlinhM(StrVal(Month(AUX_DATA)),2)
  ANO_EST = StrVal(Year(AUX_DATA))
 
  Moveto "\\Sistemas\\Estoque\\SdEstq"
  Locate [FaturaC->Codigo],
         [FaturaI->Codigo do Item   ], ANO_EST, MES_EST
  If Not RetVal
     Then Cria_FichaTrf([FaturaC->Codigo],[FaturaI->Codigo do Item],False)
  EndIf
  While True
    If Not IsLockRecord()
       Then QuitLoop
    EndIf   
  EndWhile
  [Saldo Atual      ]=NDecimal([Saldo Atual]+[FaturaI->Quantidade],3)
  [Custo Total Atual]=NDecimal([Custo Total Atual]+([FaturaI->Quantidade]*[FaturaI->Preco Unitario]),2)
  If ([Custo Total Atual]/[Saldo Atual])>0
     Then [Ultimo Custo Atual]=NDecimal([Custo Total Atual]/[Saldo Atual],5)
  EndIf
  If [FaturaC->Data de Emissao]>=[Data do Preco de Custo]
     Then [Data do Preco de Custo]=[FaturaC->Data de Emissao]
          [Preco de Custo        ]=[FaturaI->Preco Unitario ]
	EndIf
  UnLockRecord

  Moveto "FaturaI"
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

If DP_GERA_DUPLICATA="S"
   then
        NPTIT=0
        Moveto "FaturaV"
        Moveto [Numero da OF]
        Locate [FaturaC->Numero da OF]
        While [Numero da OF]=[FaturaC->Numero da OF]
          NPTIT=NPTIT+1
        
          Skip
          If EOT() Then QuitLoop EndIf
        EndWhile
        
        if NPTIT>0
           then
                CX_CONTA_CAIXA_transf="" 
                getrecord "\\sistemas\\estoque\\p_entra" [\Sistemas\Estoque\NotaEC->Codigo da Empresa] to regp_entra_transf
                if retval
                   then CX_CONTA_CAIXA_transf=regp_entra_transf["Codigo_Conta_Caixa"]
                endif   
           
                PLCONTA_transf = ""
                GetRecord "\\Sistemas\\ctapag\\p_titulo" [\Sistemas\Estoque\NotaEC->Codigo da Empresa] To regp_titulo_transf 
                If RetVal 
                   Then 
                        switch
                          case [\Sistemas\Estoque\NotaEC->Tipo de Pagamento]="V" : PLCONTA_transf = regp_titulo_transf["Plano_Conta_AVista"]
                          otherwise                                              : PLCONTA_transf = regp_titulo_transf["Plano_Conta_APrazo"]
                        endswitch
                EndIf
           
                Moveto "FaturaV"
                Moveto [Numero da OF]
                Locate [FaturaC->Numero da OF]
                While [Numero da OF]=[FaturaC->Numero da OF]

                  Moveto "\\Sistemas\\Estoque\\NotaECP"
                  End
                  Down
                
                  [Numero do Lancamento   ]=NUMEROL
                  [Sequencia do Lancamento]=numval([FaturaV->Sequencia])
                  [Codigo da Conta        ]=CX_CONTA_CAIXA_transf  
                  [Codigo da Empresa      ]=[\Sistemas\Estoque\NotaEC->Codigo da Empresa]
                  [Codigo do Documento    ]=[\Sistemas\Estoque\NotaEC->Codigo do Documento ]
                  switch
                    case sys_modo_ordemdup="N":
                      DP_ORDEM_transf=strval([Sequencia do Lancamento])
                    
                    otherwise                 :
                      If NPTIT=1
                         Then DP_ORDEM_transf=""
                         Else DP_ORDEM_transf=CHR(65+([Sequencia do Lancamento]-1))
                      EndIf
                  
                  endswitch
                  switch
                    case NPTIT=1 : [Numero do Documento    ]=[\Sistemas\Estoque\NotaEC->Numero do Documento] 
                    otherwise    : [Numero do Documento    ]=[\Sistemas\Estoque\NotaEC->Numero do Documento]+"/"+DP_ORDEM_transf
                  endswitch
                  [Tipo do Lancamento     ]="C"        
                  [Data de Vencimento     ]=[FaturaV->Data]
                  [Data a Pagar           ]=[FaturaV->Data]
                  [Data Competencia       ]=[\Sistemas\Estoque\NotaEC->Data de Emissao]
                  [Valor do Documento     ]=[FaturaV->Valor]
                ; [Valor do Desconto      ]=
                ; [Data Limite Desconto   ]=
                ; [Multa                  ]=
                ; [Taxa de Juros          ]=
                ; [Tipo Taxa de Juros     ]=
                ; [NDias Taxa de Juros    ]=
                  [Tipo do Pagamento      ]=[FaturaV->Forma de Pagamento]
                  [Observacoes            ]=[\Sistemas\Estoque\NotaEC->Tipo do Documento]+"/"+
                                            [\Sistemas\Estoque\NotaEC->Numero do Documento]+
                                            " * "+[FaturaC->Descricao da Destinacao]
                ; [Codigo CCusto          ]=
                  [Codigo Plano_Conta     ]=PLCONTA_transf
                
                  switch
                    case sys_codigo_cliente="0000":
                      
                  endswitch
                
                  TransferenciaAtualiza_CP()
                
                  Moveto "FaturaV"
                  Skip
                  If EOT() Then QuitLoop EndIf
                EndWhile
        endif
endif

Do_It!
Moveto "\\Sistemas\\Estoque\\NotaEC"  ClearImage
Moveto "\\Sistemas\\Estoque\\NotaEI"  ClearImage

If DP_GERA_DUPLICATA="S"
   then
        Moveto "\\Sistemas\\Estoque\\NotaECP" ClearImage
        Moveto "\\Sistemas\\Ctapag\\Titulos"  ClearImage
endif

Moveto "FaturaC"
CoEditKey
EndProc

;*******************************************************************************
;* Rotina para Criar Ficha do Estoque e Parametros                             *
;*******************************************************************************
Proc Cria_FichaTrf(ESTQ_EMPRESA,ESTQ_ITEM,ESTQ_CONFIRMA)
Private ESTQ_EMPRESA, ESTQ_ITEM, ESTQ_CONFIRMA, ESTQ_ANO, ESTQ_MES, MSG

;---- Processo p/ utiliza‡Æo de REGRA ------------------------------------------
Verifica_Emissao_Saida([FaturaC->Data de Emissao])
Switch
  Case REGRA_DATA_ESTOQUE = "Antiga" : AUX_DATA = [FaturaC->Data de Saida  ]
                                       If IsBlank(AUX_DATA) Then AUX_DATA=[FaturaC->Data de Emissao] EndIf
  OtherWise                          : AUX_DATA = [FaturaC->Data de Emissao]
EndSwitch
;-------------------------------------------------------------------------------
ESTQ_MES = AlinhM(StrVal(Month(AUX_DATA)),2)
ESTQ_ANO = StrVal(Year(AUX_DATA))

MSG="N„o foi encontrada a ficha de estoque referente a "+ESTQ_MES+"/"+ESTQ_ANO+" !// //"
MSG=MSG+Format("W08,AL","Empresa")   +"| "+Format("W11,AL","Item")   +"//"
MSG=MSG+Format("W08,AL",ESTQ_EMPRESA)+"| "+Format("W11,AL",ESTQ_ITEM)+"//"
MSG=MSG+"Observacoes:                                                           //"
MSG=MSG+"1. Talvez n„o foi executada a transferˆncia de saldos do mˆs anterior; //"
If ESTQ_CONFIRMA
   Then MSG=MSG+"2. Se for criada agora o saldo inicial deste item ser  igual a 0.      //"
        MSG=MSG+"// "
        MSG=MSG+"Deseja cria-la agora ?"
        ConfGeral(MSG)
        If OK="N"
           Then Return False
        EndIf
   Else MSG=MSG+"2. A ficha do item ser  criada com o saldo inicial igual a 0.          //"
;;;;    Mensagem(MSG)
EndIf

Moveto "\\Sistemas\\Estoque\\EstqPrm"
Moveto [Codigo da Empresa]
Locate ESTQ_EMPRESA, ESTQ_ITEM
If Not RetVal
   Then End Down
        [Codigo da Empresa   ]=ESTQ_EMPRESA
        [Codigo do Item      ]=ESTQ_ITEM
        UnLockRecord
EndIf

Moveto "\\Sistemas\\Estoque\\SdEstq"
While True
  Moveto [Codigo da Empresa]
  Locate ESTQ_EMPRESA, ESTQ_ITEM, ESTQ_ANO, ESTQ_MES
  If Not RetVal
     Then End Down
          [Codigo da Empresa   ]=ESTQ_EMPRESA
          [Codigo do Item      ]=ESTQ_ITEM
          [Ano Referencia      ]=ESTQ_ANO
          [Mes Referencia      ]=ESTQ_MES
          If IsLockRecord()
             Then Del
             Else UnLockRecord
          EndIf
          Loop
  EndIf
  QuitLoop
EndWhile

Return True
EndProc  ; (Cria_Ficha)

;*******************************************************************************
;* Elimina Lancamentos existentes ou regerados                                 *
;*******************************************************************************
Proc TransferenciaEstorna_CP()
Private CHV_EMPRESA, CHV_CODDOCTO, CHV_NUMERO, ci

CHV_EMPRESA  = [\Sistemas\Estoque\NotaEC->Codigo da Empresa   ]
CHV_GERSIS   = "NE"
CHV_GERLANC  = [\Sistemas\Estoque\NotaEC->Numero do Lancamento]

For ci From 1 To 2
  Moveto "\\Sistemas\\CtaPag\\Titulos"
  Moveto [Codigo da Empresa]
  Locate IndexOrder by "Indtit31" CHV_EMPRESA,CHV_GERSIS,CHV_GERLANC
  If RetVal
     Then While [Codigo da Empresa   ] = CHV_EMPRESA And
                [Lancamento Gerador  ] = CHV_GERLANC And
                "NE"                   = CHV_GERSIS  And
                [Sequencia Gerador   ]>0
     
            If Format("W11.2,EIC",[Saldo do Documento])<>Format("W11.2,EIC",[Valor do Documento])
               Then MSG="O estorno ou atualiza‡„o do lan‡amento no Contas a Pagar, referente//"
                    MSG=MSG+"a este lancamento n„o foi efetuado, pois j  teve baixa(s)!"+"////"
                    MSG=MSG+"Verificar o lancamento "+[Numero do Lancamento]+" referente ao documento//"
                    MSG=MSG+[Codigo da Empresa]+" / "+[Codigo do Documento]+" / "+[Numero do Documento]+" no Contas a Pagar!"
                    Mensagem(MSG)
                    Return False
            
            EndIf            
            If ci=2 
               Then Del
               Else Skip 
            EndIf
            If EOT() Then QuitLoop EndIf
            Locate Next IndexOrder by "Indtit31" CHV_EMPRESA,CHV_GERSIS,CHV_GERLANC
          EndWhile
  EndIf
EndFor

Return True
EndProc

;*******************************************************************************
;* Exportacao p/ Contas a Pagar                                                *
;*******************************************************************************
Proc TransferenciaAtualiza_CP()
Private CP_LANC     
                         
Moveto "\\Sistemas\\CtaPag\\Titulos"
While True
  End
  Moveto [Numero do Lancamento]
  If Numero_Lancamento("Interno","Locked_Down")
     Then CP_LANC = PROXLANCTO_NLANC
          Release Vars PROXLANCTO_NLANC
          quitloop
  EndIf    
EndWhile

[Codigo do Documento ]=[\Sistemas\Estoque\NotaEcp->Codigo do Documento ]
[Numero do Documento ]=[\Sistemas\Estoque\NotaEcp->Numero do Documento ]
[Codigo do Emitente  ]=[\Sistemas\Estoque\NotaEC->Codigo               ]
[Tipo do Lancamento  ]=[\Sistemas\Estoque\NotaEcp->Tipo do Lancamento  ]        
[Data de Emissao     ]=[\Sistemas\Estoque\NotaEC->Data de Emissao      ]
[Data de Vencimento  ]=[\Sistemas\Estoque\NotaEcp->Data de Vencimento  ]
[Data a Pagar        ]=[\Sistemas\Estoque\NotaEcp->Data a Pagar        ]
[Data Competencia    ]=[\Sistemas\Estoque\NotaEcp->Data Competencia    ]
[Data De Entrada     ]=[\Sistemas\Estoque\NotaEC->Data de Entrada      ]
[Valor do Documento  ]=[\Sistemas\Estoque\NotaEcp->Valor do Documento  ]
[Saldo do Documento  ]=[\Sistemas\Estoque\NotaEcp->Valor do Documento  ]
[Valor do Desconto   ]=[\Sistemas\Estoque\NotaEcp->Valor do Desconto   ]
[Data Limite Desconto]=[\Sistemas\Estoque\NotaEcp->Data Limite Desconto]
[Multa               ]=[\Sistemas\Estoque\NotaEcp->Multa               ]
[Taxa de Juros       ]=[\Sistemas\Estoque\NotaEcp->Taxa de Juros       ]
[Tipo Taxa de Juros  ]=[\Sistemas\Estoque\NotaEcp->Tipo Taxa de Juros  ]
[NDias Taxa de Juros ]=[\Sistemas\Estoque\NotaEcp->NDias Taxa de Juros ]
[Tipo do Pagamento   ]=[\Sistemas\Estoque\NotaEcp->Tipo do Pagamento   ]
[Codigo da Conta     ]=[\Sistemas\Estoque\NotaEcp->Codigo da Conta     ]
[Codigo da Empresa   ]=[\Sistemas\Estoque\NotaEC->Codigo da Empresa    ]
[Observacoes         ]=[\Sistemas\Estoque\NotaEcp->Observacoes         ]
[Codigo CCusto       ]=[\Sistemas\Estoque\NotaEcp->Codigo CCusto       ]
[Codigo Plano_Conta  ]=[\Sistemas\Estoque\NotaEcp->Codigo Plano_Conta  ]
Controle_Dia()
[Sistema Gerador   ]="NE"
[Lancamento Gerador]=[\Sistemas\Estoque\NotaEcp->Numero do Lancamento   ]
[Sequencia Gerador ]=[\Sistemas\Estoque\NotaEcp->Sequencia do Lancamento]
[Documento Referente ]=RTrim([\Sistemas\Estoque\NotaEC->Tipo do Documento]+"/"+[\Sistemas\Estoque\NotaEC->Numero do Documento ])
UnLockRecord

Moveto "\\Sistemas\\Estoque\\NotaEcp"
[Numero Lancamento Titulos]=CP_LANC
UnLockRecord

EndProc


;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Aguarde("Atualizando TRANSFERÒNICA "+Opcaoc+" "+NOTAFISC)

Transferencia()

Release Procs Transferencia, Cria_FichaTrf, TransferenciaEstorna_CP, TransferenciaAtualiza_CP
