;** FT_ENOTA *******************************************************************
;*  Cria‡Æo do Registro de Nota de Entrada (Cabe‡a e Item)                     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 01/04/2016 por Anivel Augusto Rodrigues
;Ultima Alteracao: 07/04/2016 por Anivel Augusto Rodrigues                     
;Motivo Alteracao: Atualizar tabela de preco por pessoa
;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
            
;-- Opera‡Æo s¢ para Compra ----------------------------------------------------

;*******************************************************************************
;* Atualizacao de Compras                                                      *
;*******************************************************************************
Proc NotaCompra(Origem_Nota)
Private NE_ENCONTRADA, Atualiza_Cotacao

Aguarde("Gerando e atualizando dados "+Opcaoc+" "+NOTAFISC)

Do_It!
SaveTables

View NOWINDOW "\\Sistemas\\Estoque\\NotaEC"
View NOWINDOW "\\Sistemas\\Estoque\\NotaEI"
View NOWINDOW "\\Sistemas\\Estoque\\Cotacao"

View NOWINDOW "\\Sistemas\\Vendas\\Tbprcli"
View NOWINDOW "\\Sistemas\\Vendas\\Tbprcit"

View NOWINDOW "\\Sistemas\\Ctapag\\Titulos"  
View NOWINDOW "\\Sistemas\\Ctapag\\Titbaixa" 

View NOWINDOW "\\Sistemas\\CtaCor\\SaldCont"
View NOWINDOW "\\Sistemas\\CtaCor\\MovCont"

CoEditKey

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

        Moveto [Numero do Documento]
        Locate NOTAFISC
        If RetVal
           Then If [Codigo do Documento]=CODFISC And
                   [Codigo da Empresa  ]=[FaturaC->Codigo da Empresa] And
                   [Tipo de Operacao   ]="C"
                   Then NE_ENCONTRADA=True
                EndIf
        EndIf
EndIf

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

        Moveto "\\Sistemas\\Estoque\\NotaEI"
        Moveto [Numero do Lancamento]
        Locate NUMERO_NE
        If RetVal
           Then While [Numero do Lancamento]=NUMERO_NE

                  Del
                  if eot() then quitloop endif
                EndWhile
        EndIf
        Moveto "\\Sistemas\\Estoque\\NotaEC"
        Del
EndIf

Moveto "\\Sistemas\\Estoque\\NotaEC"
While True
 End
 If [Numero do Lancamento]=""
    Then NUMERO_NE="000001"
    Else NUMERO_NE=AlinhM(StrVAl(NumVal([Numero do Lancamento])+1),6)
 EndIf
 Down
 [Numero do Lancamento     ]=NUMERO_NE
 If Not IsLockRecord()
    Then QuitLoop
 EndIf
EndWhile

[Codigo da Empresa        ]=[FaturaC->Codigo da Empresa]
[Codigo                   ]=[FaturaC->Codigo]
[UF                       ]=[FaturaC->UF]
;[Aliquota de ICMS         ]=[FaturaC->Aliquota de ICMS ]  ;Esse campo foi removido da tabela
[Numero do Documento      ]=NOTAFISC
[Codigo do Documento      ]=CODFISC
[Tipo de Operacao         ]="C"
[Tipo de NF               ]="N"
[Descricao Tipo NF        ]="NORMAL"
[CFO                      ]=[FaturaC->CFO            ]
[Data de Emissao          ]=[FaturaC->Data de Emissao]
[Data de Entrada          ]=[FaturaC->Data de Saida]
[Tipo de Pagamento        ]=[FaturaC->Tipo de Pagamento        ]
[Codigo do Representante  ]=[FaturaC->Codigo do Representante  ]
[Nome Fantasia Represent  ]=[FaturaC->Nome Fantasia Represent  ]
[Comissao do Representante]=[FaturaC->Comissao do Representante]
[Valor Servico            ]=[FaturaC->Valor Servico            ]
[Valor Mercadoria         ]=[FaturaC->Valor Mercadoria         ]
[Valor Mercadoria Liquido ]=[FaturaC->Valor Mercadoria Liquido ]
[Valor BCICMS             ]=[FaturaC->Valor BCICMS             ]
[Valor ICMS               ]=[FaturaC->Valor ICMS               ]
[Valor BCSubstituicao ICMS]=[FaturaC->Valor BCSubstituicao ICMS]
[Valor Substituicao ICMS  ]=[FaturaC->Valor Substituicao ICMS  ]
[Valor BCISSQN            ]=[FaturaC->Valor BCISSQN            ]
[Valor ISSQN              ]=[FaturaC->Valor ISSQN              ]
[Valor IPI                ]=[FaturaC->Valor IPI                ]
[Valor Despesas Acessorias]=[FaturaC->Valor Despesas Acessorias]
[Valor do Frete           ]=[FaturaC->Valor do Frete           ]
[Valor do Seguro          ]=[FaturaC->Valor do Seguro          ]
[Valor Nota Fiscal        ]=[FaturaC->Valor Nota Fiscal        ]
[Codigo da Tabela         ]=[FaturaC->Codigo da Tabela         ]
[Observacao               ]=[FaturaC->Observacao na Nota Fiscal]

[Frete Incluso na Nota    ]=""
[Natureza do Frete        ]=""
[Tipo CTR                 ]="0"
[Recolhimento Substituicao]="0"
[Inf_Rateios Itens        ]="2"

[Numero Nota Original     ]=NOTAFISC
[Serie Nota Original      ]=SERIEFISC
[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    ]=NUMERO_NE
  [Sequencia do Lancamento ]=[FaturaI->Item da OF]
  [Codigo da Empresa       ]=[FaturaC->Codigo da Empresa]
  [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->Custo Medio Unitario]

  [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      ]

  [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]

  [Fator de Conversao      ]= 1
  [Quantidade Convertida   ]=[FaturaI->Quantidade]
  [Comissao do Item        ]=[FaturaI->Comissao do Item]
  
  [Valor Desconto Total    ]=[FaturaI->Valor Desconto Total]
  [Valor Frete Total       ]=[FaturaI->Valor Frete Total   ]
  [Valor Seguro Total      ]=[FaturaI->Valor Seguro Total  ]
  [Valor OutDesp Total     ]=[FaturaI->Valor OutDesp Total ]
  
  [CFO                     ]=[FaturaI->CFO       ]
  
  UnLockrecord
  
  
  Moveto "FaturaI"
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

Moveto "FaturaC"
;*********** Atualiza Numero da Nota Fiscal *****************
If IsBlank([FaturaC->Numero Nota Gerada]) 
   Then If Origem_Nota="BALCAO" Or Origem_Nota="FATURA"  
           Then If PARAM_FATURA_IGUAL_OF<>"S" 
                   Then ATUALIZA_NUM_NOTA=True
                EndIf
        EndIf   
           
        If Origem_Nota="TROCA" Or Origem_Nota="CFe"
           Then ATUALIZA_NUM_NOTA=True
        EndIf   
           
        If ATUALIZA_NUM_NOTA 
           Then Moveto "NumeroNF"
                [Proximo Numero     ] = [Proximo Numero] + 1
                [Data Ultima Emissao] = [FaturaC->Data de Emissao]
                UnLockRecord
        EndIf

        Moveto "FaturaC"
        [Numero Nota Gerada]=NOTAFISC
        [Docto Nota Gerada ]=CODFISC
        [Serie Nota Gerada ]=SERIEFISC
        UnLockRecord
EndIf


Switch
  Case Origem_Nota="FATURA" : APLIC_ORIGEM="FATURA"
  Case Origem_Nota="CFe"    : APLIC_ORIGEM="CFe"
  Case Origem_Nota="BALCAO" : APLIC_ORIGEM="BALCAO"
  Case Origem_Nota="TROCA"  : APLIC_ORIGEM="TROCA"
  OtherWise                 : APLIC_ORIGEM=""
EndSwitch  

EMPRESAFISC     =[FaturaC->Codigo da Empresa]
CANCELA_DUP     =False
CX_CONTA_CAIXA  =PARAM_CONTA_CAIXA
DP_NUMERO_GERADO=""
    
;-- Estorno de Movimenta‡Æo Financeira -----------------------------------------
If DP_GERA_DUPLICATA="S"
   then
        OP_MOVCX        ="ESTORNAR"
        OP_MOVDP        ="ESTORNAR"

        ;-- Entradas -----------------------------------------------------------
        Estorno_CP_Ok  =True
        
        If PARAM_AVISTAAUTOMAT="S"
           Then Play("FT_ECXA")
        EndIf
        If PARAM_APRAZOAUTOMAT="S"
           Then If PARAM_AVISTADUPLIC="S"
                   Then Play("FT_ECXA")
                EndIf
                Play "FT_ETIT"
        EndIf

        ;-- Gera‡Æo de Movimenta‡Æo Financeira -----------------------------------------
        OP_MOVCX="ATUALIZAR"
        OP_MOVDP="ATUALIZAR"

        ;-- Entradas -----------------------------------------------------------
        Switch
          Case [FaturaC->Tipo de Pagamento]="V":
               Switch
                 Case PARAM_AVISTAAUTOMAT="S":
                       CX_VRLANC=0 ; zerar para acumular entradas
                       Moveto "FaturaV"
                       Moveto [Numero da OF]
                       Locate [FaturaC->Numero da OF]
                       If RetVal
                          Then While [Numero da OF]=[FaturaC->Numero da OF]
                          
                                 CX_VRLANC=CX_VRLANC+[Valor]
                                 
                                 Skip
                                 If EOT() Then QuitLoop EndIf
                               EndWhile
                               
                               If CX_VRLANC>0 And Verifica_Caixa([FaturaC->Codigo da Empresa])
                                  Then Play("FT_ECXA")
                               EndIf
                       EndIf

                 Case (PARAM_APRAZOAUTOMAT="S" And PARAM_AVISTADUPLIC="S") Or
                      (PARAM_AVISTAAUTOMAT="S"):
                      If Estorno_CP_Ok
                         Then Play("FT_ETIT")
                      EndIf
               EndSwitch
          Case [FaturaC->Tipo de Pagamento]="P":
               If PARAM_AVISTAAUTOMAT="S"
                  Then 
                       CX_VRLANC=0 ; zerar para acumular entradas
                       Moveto "FaturaV"
                       Moveto [Numero da OF]
                       Locate [FaturaC->Numero da OF]
                       If RetVal
                          Then While [Numero da OF]=[FaturaC->Numero da OF]
                          
                                 If [Data                       ]<=[FaturaC->Data de Emissao]
                                    then
                                         CX_VRLANC=CX_VRLANC+[Valor]
                                   endif
                                 
                                 Skip
                                 If EOT() Then QuitLoop EndIf
                               EndWhile
                               
                               If CX_VRLANC>0 And Verifica_Caixa([FaturaC->Codigo da Empresa])
                                  Then Play("FT_ECXA")
                               EndIf
                       EndIf
               EndIf           
               If PARAM_APRAZOAUTOMAT="S"
                  Then If Estorno_CP_Ok
                          Then Play("FT_ETIT")
                       EndIf
               EndIf
        EndSwitch
endif

;-- Cotacao/Tabela de Preco ----------------------------------------------------
Moveto "\\sistemas\\estoque\\NotaEI"
Moveto [Numero do Lancamento]
Locate NUMERO_NE
While [Numero do Lancamento]=NUMERO_NE
  If Not IsBlank([Codigo do Item]) And [Tipo do Item]<>"C"
     Then
          Atualiza_Cotacao=False

          Moveto "\\Sistemas\\Estoque\\Cotacao"
          Moveto [Codigo do Item]
          Locate [\Sistemas\Estoque\NotaEI->Codigo do Item],[\Sistemas\Estoque\NotaEC->Codigo]
          If Not RetVal
             Then End Down
                  [Codigo do Item]=[\Sistemas\Estoque\NotaEI->Codigo do Item]
                  [Codigo        ]=[\Sistemas\Estoque\NotaEC->Codigo        ]
                  Atualiza_Cotacao=True
             Else Switch
                    Case [Numero do Lancamento]=[\Sistemas\Estoque\NotaEI->Numero do Lancamento]:
                         Atualiza_Cotacao=True
                    Case [\Sistemas\Estoque\NotaEC->Data de Entrada]>[Data de Compra]:
                         Atualiza_Cotacao=True
                    Case [\Sistemas\Estoque\NotaEC->Data de Entrada    ] =[Data de Compra] And
                         [\Sistemas\Estoque\NotaEC->Numero do Documento]>=[Numero do Documento]:
                         Atualiza_Cotacao=True
                  EndSwitch
          Endif

          If Atualiza_Cotacao
             Then [Razao Social            ]=[\Sistemas\Estoque\NotaEC->Razao Social            ]
                  [Data de Compra          ]=[\Sistemas\Estoque\NotaEC->Data de Entrada         ]
                  [Numero do Documento     ]=[\Sistemas\Estoque\NotaEC->Numero do Documento     ] 
                  [Tipo do Documento       ]=[\Sistemas\Estoque\NotaEC->Tipo do Documento       ]
                  [Data de Emissao         ]=[\Sistemas\Estoque\NotaEC->Data de Emissao         ]
                  [Quantidade              ]=[\Sistemas\Estoque\NotaEI->Quantidade              ] 
                  [Unidade Entrada         ]=[\Sistemas\Estoque\NotaEI->Unidade Entrada         ]
                  If [\Sistemas\Estoque\NotaEI->Valor Desconto Total]>0
                     Then [Valor Unitario  ]=([\Sistemas\Estoque\NotaEI->Preco Total]/[\Sistemas\Estoque\NotaEI->Quantidade])-
                                             ([\Sistemas\Estoque\NotaEI->Valor Desconto Total]/[\Sistemas\Estoque\NotaEI->Quantidade])
                     Else [Valor Unitario  ]=[\Sistemas\Estoque\NotaEI->Preco Total]/[\Sistemas\Estoque\NotaEI->Quantidade]
                  EndIf
                  [Custo Medio Unitario    ]=[\Sistemas\Estoque\NotaEI->Custo Medio Unitario    ]
                  [Unidade Interna         ]=[\Sistemas\Estoque\NotaEI->Unidade Interna         ]
                  [Numero do Lancamento    ]=[\Sistemas\Estoque\NotaEI->Numero do Lancamento    ]
                  [MVA                     ]=[\Sistemas\Estoque\NotaEI->MVA                     ]
                  [ICMS UF_ORIGEM          ]=[\Sistemas\Estoque\NotaEI->ICMS UF_ORIGEM          ]
                  [Tributacao de IPI       ]=[\Sistemas\Estoque\NotaEI->Tributacao de IPI       ]
                  [Aliquota Reduzida BCIPI ]=[\Sistemas\Estoque\NotaEI->Aliquota Reduzida BCIPI ]
                  [Aliquota de IPI         ]=[\Sistemas\Estoque\NotaEI->Aliquota de IPI         ]
                  [Tributacao de ICMS      ]=[\Sistemas\Estoque\NotaEI->Tributacao de ICMS      ]
                  [Aliquota Reduzida BCICMS]=[\Sistemas\Estoque\NotaEI->Aliquota Reduzida BCICMS]
                  [Aliquota de ICMS        ]=[\Sistemas\Estoque\NotaEI->Aliquota de ICMS        ]
                  [Fator de Conversao      ]=[\Sistemas\Estoque\NotaEI->Fator de Conversao      ]
                  [Tipo Tributacao         ]=[\Sistemas\Estoque\NotaEI->Tipo Tributacao         ]
                  [IPI_CST                 ]=[\Sistemas\Estoque\NotaEI->IPI_CST                 ]
                  [CFO                     ]=[\Sistemas\Estoque\NotaEI->CFO                     ]
                  
                  UnLockRecord
          EndIf
     
          while true
            Moveto "\\Sistemas\\Vendas\\Tbprcit" 
            moveto [Codigo da Tabela]
            locate [Faturac->Codigo da Tabela], [Faturac->Codigo], [\Sistemas\Estoque\NotaEI->Codigo do Item]
            if not retval
               then
                    end
                    down
                    [Codigo da Tabela]=[Faturac->Codigo da Tabela]
                    [Codigo          ]=[Faturac->Codigo]
                    [Codigo do Item  ]=[\Sistemas\Estoque\NotaEI->Codigo do Item]
                    [Lookup_item     ]=[\Sistemas\Estoque\NotaEI->Codigo do Item]
            endif
            if not islockrecord()
               then quitloop
            endif   
          endwhile
          if [\Sistemas\Estoque\NotaEC->Data de Emissao]>=[Data Ultimo Reajuste]
             then
                  [Preco Unitario      ]=[\Sistemas\Estoque\NotaEI->Preco Unitario          ]
                  [Data Ultimo Reajuste]=[\Sistemas\Estoque\NotaEC->Data de Emissao         ]
                  [Taxa Ultimo Reajuste]=blanknum()
          endif   
          unlockrecord
  EndIf
  
  Moveto "\\Sistemas\\Estoque\\NotaEI"
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

while true
  Moveto "\\Sistemas\\Vendas\\Tbprcli" 
  moveto [Codigo da Tabela]
  locate [Faturac->Codigo da Tabela], [Faturac->Codigo]
  if retval
     then quitloop
     else
          end
          down
          [Codigo da Tabela]=[Faturac->Codigo da Tabela]
          [Codigo          ]=[Faturac->Codigo]
  endif
  if not islockrecord()
     then unlockrecord
          quitloop
  endif   
endwhile

;-------------------------------------------------------------------------------

Moveto "FaturaC"

Do_It!
SaveTables

Moveto "\\Sistemas\\Estoque\\NotaEC"   ClearImage
Moveto "\\Sistemas\\Estoque\\NotaEI"   ClearImage
Moveto "\\Sistemas\\Estoque\\Cotacao"  ClearImage

Moveto "\\Sistemas\\Vendas\\Tbprcli"   ClearImage
Moveto "\\Sistemas\\Vendas\\Tbprcit"   ClearImage

Moveto "\\Sistemas\\Ctapag\\Titulos"   ClearImage
Moveto "\\Sistemas\\Ctapag\\Titbaixa"  ClearImage

Moveto "\\Sistemas\\CtaCor\\SaldCont"  ClearImage
Moveto "\\Sistemas\\CtaCor\\MovCont"   ClearImage

CoEditKey  

;****** Finalizando Procedure **************************************************
Switch 
  Case Origem_Nota="FATURA" :
       If Not IMPRIMIR_CARREGAMENTO
          Then SaveTables
       EndIf
  OtherWise            : SaveTables    
EndSwitch


release vars numero_ne 

EndProc ;(NotaCompra)


;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************

NotaCompra(VERIFICA_CONSULTA)

release vars numero_NE
Release Procs NotaCompra

