;** FT_NOTA ********************************************************************
;*  Cria‡Æo do Registro de Nota Fiscal (Cabe‡a e Item)                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 02/07/2012 por Bruno Carvalho
;Ultima Alteracao: 04/07/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes ATUALIZA_NUM_NOTA                           
;Ultima Alteracao: 12/07/2012 por Bruno Carvalho
;Motivo Alteracao: InclusÆo "NotaIDD" e "NotaIAD" 
;Ultima Alteracao: 24/07/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes NF-e modo DPEC+FSDA                             
;Ultima Alteracao: 13/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Uso campos INSS e IR                            
;Ultima Alteracao: 20/09/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustado variavel "CX_VRLANC" recebendo outro valor quando Origem=Troca                             
;Ultima Alteracao: 30/11/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controle de Pendencias-ECT                     
;Ultima Alteracao: 04/03/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controle de Pedido Entrega Futura              
                                      
;*******************************************************************************
;* Grava Notas                                                                 *
;*******************************************************************************
Proc NOTA(Origem_Nota)
Private Origem_Nota,ATUALIZA_NUM_NOTA

Switch
  Case Origem_Nota="FATURA" : Aguarde("Gerando e atualizando dados "+Opcaoc+" "+NOTAFISC)
  OtherWise                 : Aguarde("Atualizando Dados")
EndSwitch  

;****** Excluir Vencimentos se Existir ********************************
Moveto "NotaV"
Moveto [Codigo da Empresa]
Locate [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
If RetVal
   Then While True
          Del
          Locate Next [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
          If Not RetVal
             Then QuitLoop
          EndIf
        EndWhile
EndIf

;****** Excluir Rateio Comissao se Existir ********************************
Moveto "NotaIC"
Moveto [Codigo da Empresa]
Locate [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
If RetVal
   Then While True
          Del
          Locate Next [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
          If Not RetVal
             Then QuitLoop
          EndIf
        EndWhile
EndIf

Switch
  Case Origem_Nota="FATURA" :
       ;****** Excluir Notas Referenciadas se Existir *********************
       Moveto "NotaR"
       Moveto [Codigo da Empresa]
       Locate [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
       If RetVal
          Then While True
                 Del
                 Locate Next [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
                 If Not RetVal
                    Then QuitLoop
                 EndIf
               EndWhile
       EndIf
      
       ;****** Excluir Ordem de Compra Publica se Existir *****************
       Moveto "NotaOCP"
       Moveto [Codigo da Empresa]
       Locate [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
       If RetVal
          Then Del
       EndIf
             
EndSwitch       

;****** Excluir Itens se Existir **************************************
Moveto "NotaI"
Moveto [Codigo da Empresa]
Locate [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
If RetVal
   Then While True
          Del
          Locate Next [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
          If Not RetVal
             Then QuitLoop
          EndIf
        EndWhile
EndIf

If Origem_Nota="FATURA" 
   Then ;****** Exclui Valor de Importa‡Æo ***************************** 
        Moveto "NotaIAD"
        Moveto [Codigo da Empresa]
        Locate [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
        If RetVal
           Then While True
                  Del
                  Locate Next [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
                  If Not RetVal
                     Then QuitLoop
                  EndIf
                EndWhile
        EndIf

        Moveto "NotaIDD"
        Moveto [Codigo da Empresa]
        Locate [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
        If RetVal
           Then While True
                  Del
                  Locate Next [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
                  If Not RetVal
                     Then QuitLoop
                  EndIf
                EndWhile
        EndIf
EndIf

;****** Excluir Cabeca se Existir *************************************
NLANCTO_CHEQUE=""
Moveto "NotaC"
Moveto [Codigo da Empresa]
Locate [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
If RetVal
   Then NLANCTO_CHEQUE=[Numero Lancamento Cheque]
        Del
EndIf

;****** Gera Cabeca da Nota Fiscal *******************************
Moveto "NotaC"
End
Down
[Codigo da Empresa        ] = [FaturaC->Codigo da Empresa        ]
[Numero do Documento      ] = NOTAFISC
[Codigo do Documento      ] = CODFISC

[Numero do Pedido         ] = [FaturaC->Numero do Pedido         ]
[Origem do Pedido         ] = [FaturaC->Origem do Pedido         ]
[Numero do Orcamento      ] = [FaturaC->Numero do Orcamento      ]
[Codigo da Empresa        ] = [FaturaC->Codigo da Empresa        ]
[Data de Emissao          ] = [FaturaC->Data de Emissao          ]
If IsBlank([FaturaC->Data de Saida])
   Then [Data de Saida    ] = [FaturaC->Data de Emissao  ]
   Else [Data de Saida    ] = [FaturaC->Data de Saida    ]
EndIf
[Hora de Saida            ] = [FaturaC->Hora de Saida            ]
[Codigo                   ] = [FaturaC->Codigo                   ]
[Tipo                     ] = [FaturaC->Tipo                     ]
[Nome Fantasia EmitDest   ] = [FaturaC->Nome Fantasia EmitDest   ]
[Tipo Pessoa              ] = [FaturaC->Tipo Pessoa              ]
[Consumidor Final         ] = [FaturaC->Consumidor Final         ]
[Razao Social             ] = [FaturaC->Razao Social             ]
[Endereco                 ] = [FaturaC->Endereco                 ]
[Bairro                   ] = [FaturaC->Bairro                   ]
[CEP                      ] = [FaturaC->CEP                      ]
[Cidade                   ] = [FaturaC->Cidade                   ]
[UF                       ] = [FaturaC->UF                       ]
[CGC                      ] = [FaturaC->CGC                      ]
[IE                       ] = [FaturaC->IE                       ]
[Telefone                 ] = [FaturaC->Telefone                 ]
[ISUFRAMA                 ] = [FaturaC->ISUFRAMA                 ]
[Nome do Autorizado       ] = [FaturaC->Nome do Autorizado       ]
[CPF do Autorizado        ] = [FaturaC->CPF do Autorizado        ]
[Data da Autorizacao      ] = [FaturaC->Data da Autorizacao      ] 
[Codigo do Representante  ] = [FaturaC->Codigo do Representante  ]
[Nome Fantasia Represent  ] = [FaturaC->Nome Fantasia Represent  ]
[Comissao do Representante] = [FaturaC->Comissao do Representante]
[Codigo da Tabela         ] = [FaturaC->Codigo da Tabela         ]
[Condicao de Pagamento    ] = [FaturaC->Condicao de Pagamento    ]
[Descricao CondPagto      ] = [FaturaC->Descricao CondPagto      ]
[Numero de Parcelas       ] = [FaturaC->Numero de Parcelas       ]
[Tipo de Pagamento        ] = [FaturaC->Tipo de Pagamento        ]
[Composicao de Dias       ] = [FaturaC->Composicao de Dias       ]
[Forma de Pagamento       ] = [FaturaC->Forma de Pagamento       ]
[Codigo da Destinacao     ] = [FaturaC->Codigo da Destinacao     ]
[Descricao da Destinacao  ] = [FaturaC->Descricao da Destinacao  ]
[CFO                      ] = [FaturaC->CFO                      ]
[Atualiza Estoque         ] = [FaturaC->Atualiza Estoque         ]
[Tipo Movimento Estoque   ] = [FaturaC->Tipo Movimento Estoque   ]
[Aliquota de ICMS         ] = UF_ALIQUOTA_ICMS
[Codigo da Transportadora ] = [FaturaC->Codigo da Transportadora ]
[Nome Fantasia Transport  ] = [FaturaC->Nome Fantasia Transport  ]
[Placa do Veiculo         ] = [FaturaC->Placa do Veiculo         ]
[UF Veiculo               ] = [FaturaC->UF Veiculo               ]
[RNTC Veiculo             ] = [FaturaC->RNTC Veiculo             ]
[Frete por Conta          ] = [FaturaC->Frete por Conta          ]
[Taxa de Desconto         ] = [FaturaC->Taxa de Desconto         ]
[Valor do Desconto        ] = [FaturaC->Valor do Desconto        ]
[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 BCISSQN            ] = [FaturaC->Valor BCISSQN            ]
[Valor ISSQN              ] = [FaturaC->Valor ISSQN              ]
;;;;;[Valor INSS               ] = [FaturaC->Valor INSS               ]
;;;;;[Valor IR                 ] = [FaturaC->Valor IR                 ]
[Valor INSS               ] = BlankNum()
[Valor IR                 ] = BlankNum()
[Valor PIS                ] = [FaturaC->Valor PIS                ]
[Valor COFINS             ] = [FaturaC->Valor COFINS             ]
[Valor II                 ] = [FaturaC->Valor II                 ]
[Valor do Seguro          ] = [FaturaC->Valor do Seguro          ]
[Frete Incluso na Nota    ] = [FaturaC->Frete Incluso na Nota    ]
[Valor do Frete           ] = [FaturaC->Valor do Frete           ]
[Valor Despesas Acessorias] = [FaturaC->Valor Despesas Acessorias]
[Valor Nota Fiscal        ] = [FaturaC->Valor Nota Fiscal        ]
[Valor BCSubstituicao ICMS] = [FaturaC->Valor BCSubstituicao ICMS]                       
[Valor Substituicao ICMS  ] = [FaturaC->Valor Substituicao ICMS  ]
[Aliquota BCFrete Nota    ] = [FaturaC->Aliquota BCFrete Nota    ]
[Aliquota BCICMS Frete    ] = [FaturaC->Aliquota BCICMS Frete    ]
[Aliquota de ICMS Frete   ] = [FaturaC->Aliquota de ICMS Frete   ]   
[Cfo Frete                ] = [FaturaC->Cfo Frete                ]
[Numero de Volumes        ] = [FaturaC->Numero de Volumes        ]
[Peso Bruto               ] = [FaturaC->Peso Bruto               ]
[Peso Liquido             ] = [FaturaC->Peso Liquido             ]
;;;[Serie Nota Original      ] = [FaturaC->Serie Nota Original      ]
[Numero Nota Original     ] = [FaturaC->Numero Nota Original     ]
[Numero da Of             ] = [FaturaC->Numero da Of             ]
[Observacao na Nota Fiscal] = [FaturaC->Observacao na Nota Fiscal]
[Situacao                 ] = ""
[Exportado_Caixa          ] = ""
[Numero_Carregamento      ] = [FaturaC->Numero_Carregamento      ]
                       
Switch
  Case Origem_Nota="FATURA" :
       [Sistema Gerador          ] = "FT"      
       If Not IsBlank(CHAVE_ACESSO_NFe)
          Then If NFEJA_AUTORIZADA
                  Then [Sistema Gerador]=[FaturaC->Sistema Gerador]
                  Else [Sistema Gerador]=[FaturaC->Sistema Gerador]
               EndIf        
               [Chave_Acesso_NFe ] = CHAVE_ACESSO_NFe
       EndIf         
    
  Case Origem_Nota="BALCAO" :
       [Sistema Gerador          ] = "BA"
       [Aliquota de ICMS         ] = UF_ALIQUOTA_ICMS
       [Entrega                  ] = [FaturaC->Entrega                  ]
       [Nome do Autorizado       ] = [FaturaC->Nome do Autorizado       ]
       [CPF do Autorizado        ] = [FaturaC->CPF do Autorizado        ]
       [Data da Autorizacao      ] = [FaturaC->Data da Autorizacao      ]
          
  Case Origem_Nota="TROCA"  :
       [Sistema Gerador          ] = "TR"
       
       [Valor Servico            ] = 0
       [Valor Devolucao          ] = [FaturaC->Valor Servico            ]
       [Valor BCSubstituicao ICMS] = 0
       [Valor Substituicao ICMS  ] = 0                       
      
EndSwitch                                  

Controle_Dia()
UnLockRecord

;*********** 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"
           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

;****** Posiciona cursor no registro novamente/chave ******************
Moveto "NotaC"
Moveto [Codigo da Empresa]
Locate [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC

;****** Gera Vencimentos da Nota Fiscal *******************************
Moveto "FaturaV"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
If RetVal
   Then REGISTRO_NOTAVT=True
        While [Numero da OF]=[FaturaC->Numero da OF]
          Moveto "NotaV"
          End
          Down

          [Codigo da Empresa  ] = [FaturaC->Codigo da Empresa ]
          [Numero do Documento] = NOTAFISC
          [Serie do Documento ] = SERIEFISC
          [Sequencia          ] = [FaturaV->Sequencia         ]
          [Numero de Dias     ] = [FaturaV->Numero de Dias    ]
          [Data               ] = [FaturaV->Data              ]
          [Valor              ] = [FaturaV->Valor             ]
          [Forma de Pagamento ] = [FaturaV->Forma de Pagamento]
          [Observacao         ] = [FaturaV->Observacao        ]
          [Codigo_Banco       ] = [FaturaV->Codigo_Banco      ]
          [Nome_Banco         ] = [FaturaV->Nome_Banco        ]
          [Agencia            ] = [FaturaV->Agencia           ]
          [Numero_Conta       ] = [FaturaV->Numero_Conta      ]
          [Numero_Cheque      ] = [FaturaV->Numero_Cheque     ]
          [CPF                ] = [FaturaV->CPF               ]
          [Tipo_Emitente      ] = [FaturaV->Tipo_Emitente     ]
          [Titular_Cheque     ] = [FaturaV->Titular_Cheque    ]
          [Cidade             ] = [FaturaV->Cidade            ]
          [UF                 ] = [FaturaV->UF                ]
          [Numero do Cartao   ] = [FaturaV->Numero do Cartao  ]
          [Nome do Cartao     ] = [FaturaV->Nome do Cartao    ]
          [Valor da Comissao  ] = [FaturaV->Valor da Comissao ]

          If Origem_Nota="FATURA"
             Then [Duplicata_VrOriginal   ]=[FaturaV->Duplicata_VrOriginal   ]
                  [Duplicata_VrDesconto   ]=[FaturaV->Duplicata_VrDesconto   ]  
                  [Duplicata_DtLimDesconto]=[FaturaV->Duplicata_DtLimDesconto]
          EndIf         

          UnLockRecord

          Moveto "FaturaV"
          Skip
          If EOT() Then QuitLoop EndIf
        EndWhile
EndIf
  
If Origem_Nota="FATURA" Or Origem_Nota="BALCAO"
   Then ;****** Gera Rateio Comissao da Nota Fiscal *******************************
        Moveto "FaturaIC"
        Moveto [Numero da OF]
        Locate [FaturaC->Numero da OF]
        If RetVal
           Then REGISTRO_NOTAVT=True
                While [Numero da OF]=[FaturaC->Numero da OF]
                  Moveto "NotaIC"
                  End
                  Down
        
                  [Codigo da Empresa        ] = [FaturaC->Codigo da Empresa ]
                  [Numero do Documento      ] = NOTAFISC
                  [Serie do Documento       ] = SERIEFISC
                  [Item do Documento        ] = [FaturaIC->Item da OF]
                  [Codigo do Representante  ] = [FaturaIC->Codigo do Representante  ]
                  [Comissao do Representante] = [FaturaIC->Comissao do Representante]
                  UnLockRecord
        
                  Moveto "FaturaIC"
                  Skip
                  If EOT() Then QuitLoop EndIf
                EndWhile
        EndIf
EndIf

If Origem_Nota="FATURA" 
   Then ;****** Gera Notas Referenciadas da Nota Fiscal ********************
        Moveto "FaturaR"
        Moveto [Numero da OF]
        Locate [FaturaC->Numero da OF]
        If RetVal
           Then While [Numero da OF]=[FaturaC->Numero da OF]
                  Moveto "NotaR"
                  End
                  Down
                  [Codigo da Empresa  ]=[FaturaC->Codigo da Empresa  ]
                  [Numero do Documento]=NOTAFISC
                  [Serie do Documento ]=SERIEFISC
                  [Sequencia          ]=[FaturaR->Sequencia          ]
                  [Modelo_Documento   ]=[FaturaR->Modelo_Documento   ]
                  [Data_Documento     ]=[FaturaR->Data_Documento     ]
                  [Numero_Documento   ]=[FaturaR->Numero_Documento   ] 
                  [Serie_Documento    ]=[FaturaR->Serie_Documento    ]
                  [SubSerie_Documento ]=[FaturaR->SubSerie_Documento ]
                  [Codigo_Participante]=[FaturaR->Codigo_Participante]
                  [Nome_Participante  ]=[FaturaR->Nome_Participante  ]
                  [UF                 ]=[FaturaR->UF                 ]
                  [CNPJ_CPF           ]=[FaturaR->CNPJ_CPF           ]
                  [IE                 ]=[FaturaR->IE                 ]
                  [Chave_Acesso       ]=[FaturaR->Chave_Acesso       ]
                  [Numero_ECF         ]=[FaturaR->Numero_ECF         ]
                  [Numero_Serie_ECF   ]=[FaturaR->Numero_Serie_ECF   ]
                  UnLockRecord
        
                  Moveto "FaturaR"
                  Skip
                  If EOT() Then QuitLoop EndIf
                EndWhile
        EndIf

        ;****** Gera Ordem de Compra Publica da Nota Fiscal *********
        Moveto "FaturOCP"
        Moveto [Numero da OF]
        Locate [FaturaC->Numero da OF]
        If RetVal
           Then Moveto "NotaOCP"
                End Down
                [Codigo da Empresa  ]=[FaturaC->Codigo da Empresa]
                [Numero do Documento]=NOTAFISC
                [Serie do Documento ]=SERIEFISC        
                [Nota de Empenho    ]=[FaturOCP->Nota de Empenho]
                [Pedido             ]=[FaturOCP->Pedido         ] 
                [Contrato           ]=[FaturOCP->Contrato       ]
                UnLockRecord
        EndIf

        ;****** Gera Valor de Importa‡Æo ************************** 
        Moveto "FaturIAD"
        Moveto [Numero da OF]
        Locate [FaturaC->Numero da OF]
        While [Numero da OF]=[FaturaC->Numero da OF]
          Moveto "NotaIAD"
          End Down
          [Codigo da Empresa       ]=[FaturaC->Codigo da Empresa        ]
          [Numero do Documento     ]=NOTAFISC 
          [Serie do Documento      ]=SERIEFISC 
          [Item do Documento       ]=[Faturiad->Item da OF              ]  
          [Sequencia_Doc_Importacao]=[Faturiad->Sequencia_Doc_Importacao] 
          [Sequencia_Adicao        ]=[Faturiad->Sequencia_Adicao        ]
          [Numero_Adicao           ]=[Faturiad->Numero_Adicao           ]
          [Codigo_Fabricante       ]=[Faturiad->Codigo_Fabricante       ]
          [Nome_Fabricante         ]=[Faturiad->Nome_Fabricante         ]
          [Valor_Desconto_Adicao   ]=[Faturiad->Valor_Desconto_Adicao   ]
          UnLockRecord 
                            
          Moveto "FaturIAD"
          Skip
          If EOT() Then QuitLoop EndIf  
        EndWhile
        
        Moveto "FaturIDD"
        Moveto [Numero da OF]
        Locate [FaturaC->Numero da OF]
        While [Numero da OF]=[FaturaC->Numero da OF]
          Moveto "NotaIDD"
          End Down  
          [Codigo da Empresa       ]=[FaturaC->Codigo da Empresa        ]
          [Numero do Documento     ]=NOTAFISC 
          [Serie do Documento      ]=SERIEFISC 
          [Item do Documento       ]=[Faturidd->Item da OF              ]  
          [Sequencia_Doc_Importacao]=[Faturidd->Sequencia_Doc_Importacao]
          [Numero_DocImportacao    ]=[Faturidd->Numero_DocImportacao    ]
          [Data_Registro_DI_DSI_DA ]=[Faturidd->Data_Registro_DI_DSI_DA ]
          [Local_Desembaraco       ]=[Faturidd->Local_Desembaraco       ]
          [UF_Desembaraco          ]=[Faturidd->UF_Desembaraco          ]
          [Data_Desembaraco        ]=[Faturidd->Data_Desembaraco        ]
          [Codigo_Exportador       ]=[Faturidd->Codigo_Exportador       ]
          [Nome_Exportador         ]=[Faturidd->Nome_Exportador         ]
          UnLockRecord     
                 
          Moveto "FaturIDD"
          Skip
          If EOT() Then QuitLoop EndIf                                                 
        EndWhile

EndIf

;****** Gera Item da Nota Fiscal **************************
Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]
  Moveto "NotaI"
  End
  Down
  [Codigo da Empresa        ] = [FaturaC->Codigo da Empresa]
  [Numero do Documento      ] = NOTAFISC
  [Serie do Documento       ] = SERIEFISC
  [Item do Documento        ] = [FaturaI->Item da OF        ]
  [Numero Pedido_Orcamento  ] = [FaturaI->Numero Pedido_Orcamento ]
  [Item Pedido_Orcamento    ] = [FaturaI->Item Pedido_Orcamento   ]
  [Tipo do Item             ] = [FaturaI->Tipo do Item            ]
  [Codigo do Item           ] = [FaturaI->Codigo 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          ]
  [Taxa Desconto Unitario   ] = [FaturaI->Taxa Desconto Unitario  ]
  [Valor Desconto Unitario  ] = [FaturaI->Valor Desconto Unitario ]
  [Preco Total              ] = Round([FaturaI->Preco Total       ],2)
  [Preco Unitario Tabela    ] = [FaturaI->Preco Unitario Tabela   ]
  [Custo Medio Unitario     ] = [FaturaI->Custo Medio Unitario    ]

  [CFO                      ] = [FaturaI->CFO                     ]
  [NCM                      ] = [FaturaI->NCM                     ] 
  [NBM                      ] = [FaturaI->NBM                     ] 

  [Taxa Desconto Total      ] = [FaturaI->Taxa Desconto Total     ]
  [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     ]

  [Tipo Tributacao          ] = [FaturaI->Tipo Tributacao         ]
  [Tributacao de ICMS       ] = [FaturaI->Tributacao de ICMS      ]
  [Aliquota Reduzida BCICMS ] = [FaturaI->Aliquota Reduzida BCICMS]
  [Aliquota de ICMS         ] = [FaturaI->Aliquota de ICMS        ]
  [ICMS_BC                  ] = [FaturaI->ICMS_BC                 ]
  [Valor do ICMS            ] = [FaturaI->Valor do ICMS           ]

  [MVA                      ] = [FaturaI->MVA                     ]
  [ICMS_ST_Aliquota         ] = [FaturaI->ICMS_ST_Aliquota        ]
  [ICMS_ST_BC               ] = [FaturaI->ICMS_ST_BC              ]
  [ICMS_ST_Valor            ] = [FaturaI->ICMS_ST_Valor           ]

  [CSOSN                    ] = [FaturaI->CSOSN                   ]
  [ICMS_CredSN_Aliquota     ] = [FaturaI->ICMS_CredSN_Aliquota    ]
  [ICMS_CredSN_Valor        ] = [FaturaI->ICMS_CredSN_Valor       ]

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

  [Tributacao de ISSQN      ] = [FaturaI->Tributacao de ISSQN     ]
  [Aliquota de ISSQN        ] = [FaturaI->Aliquota de ISSQN       ]
  [ISSQN_BC                 ] = [FaturaI->ISSQN_BC                ]
  [Valor do ISSQN           ] = [FaturaI->Valor do ISSQN          ]
  [Codigo_Servico           ] = [FaturaI->Codigo_Servico          ]
  [ISSQN_UF                 ] = [FaturaI->ISSQN_UF                ]
  [ISSQN_Municipio          ] = [FaturaI->ISSQN_Municipio         ]

  [Tributacao de IR         ] = [FaturaI->Tributacao de IR        ]
  [Aliquota de IR           ] = [FaturaI->Aliquota de IR          ]
  [Valor do IR              ] = [FaturaI->Valor do IR             ]
  [Tributacao de INSS       ] = [FaturaI->Tributacao de INSS      ]
  [Aliquota de INSS         ] = [FaturaI->Aliquota de INSS        ]
  [Valor do INSS            ] = [FaturaI->Valor do INSS           ]

  [Peso Liquido             ] = [FaturaI->Peso Liquido            ]
  [Peso Embalagem           ] = [FaturaI->Peso Embalagem          ]
  [Volumes                  ] = [FaturaI->Volumes                 ]
  [Edita Descricao do Item  ] = [FaturaI->Edita Descricao do Item ]
  [Fator Conversao          ] = [FaturaI->Fator Conversao         ]
  [Comissao do Item         ] = [FaturaI->Comissao do Item        ]
  [Condicao de Pagamento    ] = [FaturaI->Condicao de Pagamento   ]
  [Composicao de Dias       ] = [FaturaI->Composicao de Dias      ]
  [Codigo da Tabela         ] = [FaturaI->Codigo da Tabela        ]

  [PIS_CST                  ] = [FaturaI->PIS_CST                 ]
  [PIS_Aliquota             ] = [FaturaI->PIS_Aliquota            ]
  [PIS_BC                   ] = [FaturaI->PIS_BC                  ]
  [PIS_Valor                ] = [FaturaI->PIS_Valor               ]

  [COFINS_CST               ] = [FaturaI->COFINS_CST              ]
  [COFINS_Aliquota          ] = [FaturaI->COFINS_Aliquota         ]
  [COFINS_BC                ] = [FaturaI->COFINS_BC               ]
  [COFINS_Valor             ] = [FaturaI->COFINS_Valor            ]

  [II_BC                    ] = [FaturaI->II_BC                   ]
  [II_Valor DespAduan       ] = [FaturaI->II_Valor DespAduan      ]
  [II_Valor IOF             ] = [FaturaI->II_Valor IOF            ]
  [II_Valor Imposto         ] = [FaturaI->II_Valor Imposto        ]

  [Informacoes_Adicionais   ] = [FaturaI->Informacoes_Adicionais  ]
  
  Switch   
    Case Origem_Nota="BALCAO" :
         [Entrega           ] = [FaturaI->Entrega                 ]
         [Data a Entregar   ] = [FaturaI->Data a Entregar         ]
         [Data de Entrega   ] = [FaturaI->Data de Entrega         ]  
  EndSwitch  
     
  UnLockRecord

  If [FaturaC->Tipo Movimento Estoque]="S"
     Then While True
            Moveto "\\Sistemas\\Estoque\\EstqPrm"
            Moveto [Codigo da Empresa]
            Locate [FaturaC->Codigo da Empresa],
                   [FaturaI->Codigo do Item]
            If Not RetVal
               Then End Down
                    [Codigo da Empresa   ]=[FaturaC->Codigo da Empresa]
                    [Codigo do Item      ]=[FaturaI->Codigo do Item   ]
                    If IsLockRecord()
                       Then Del
                       Else QuitLoop
                    EndIf
               Else If Not IsLockRecord()
                       Then QuitLoop
                    EndIf
            EndIf        
          EndWhile
          If Not IsBlank([FaturaC->Data de Saida])
             Then If [FaturaC->Data de Saida]>[Data da Ultima Saida]
                     Then [Data da Ultima Saida]=[FaturaC->Data de Saida]
                   EndIf
             Else If [FaturaC->Data de Emissao]>[Data da Ultima Saida]
                     Then [Data da Ultima Saida]=[FaturaC->Data de Emissao]
                   EndIf
          EndIf
          UnLockRecord
  EndIf

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

;******** Rotina Caixa/Banco e Duplicatas **************************************
Moveto "FaturaC"

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

OP_MOVCX    ="ATUALIZAR"
OP_MOVDP    ="ATUALIZAR"
CANCELA_DUP =False

ROTINA_CAIXA_BANCO=False
Switch
  Case Origem_Nota="TROCA" :
       If [FaturaC->Tipo Movimento Estoque]="S"  And DP_GERA_DUPLICATA="S" And [FaturaC->Valor IR]<0
          Then ROTINA_CAIXA_BANCO=True
       EndIf    
  OtherWise           :
       If [FaturaC->Tipo Movimento Estoque]="S"  And DP_GERA_DUPLICATA="S" 
          Then ROTINA_CAIXA_BANCO=True
       EndIf   
EndSwitch

If ROTINA_CAIXA_BANCO
   Then EMPRESAFISC=[FaturaC->Codigo da Empresa]

        If Origem_Nota="FATURA" Or Origem_Nota="BALCAO" 
           Then Estorno_DPCR_Ok=True
        EndIf   

        DP_NUMERO_GERADO=""
        CX_CONTA_CAIXA=PARAM_CONTA_CAIXA
        If PARAM_AVISTAAUTOMAT="S"
           Then OP_MOVCX="ESTORNAR"
                Play("FT_CAIXA")
        EndIf
        If PARAM_APRAZOAUTOMAT="S"
           Then If PARAM_AVISTADUPLIC="S"
                   Then OP_MOVCX="ESTORNAR"
                        Play("FT_CAIXA")
                EndIf
                OP_MOVDP="ESTORNAR"
                Play("FT_DUPLI")
        EndIf

        OP_MOVCX="ATUALIZAR"
        OP_MOVDP="ATUALIZAR"
          
        Switch
          Case [FaturaC->Tipo de Pagamento]="V":
               Switch
                 Case PARAM_AVISTAAUTOMAT="S" And
                      ([FaturaC->Forma de Pagamento]<>"CD" And
                       [FaturaC->Forma de Pagamento]<>"CT" And 
                       [FaturaC->Forma de Pagamento]<>"DE"):
                      CX_CONTA_CAIXA=PARAM_CONTA_CAIXA
                      If Origem_Nota="TROCA"
                         Then CX_VRLANC=([FaturaC->Valor IR]*-1)
                         Else CX_VRLANC=[FaturaC->Valor Nota Fiscal]
                      EndIf    
                      If Verifica_Caixa()
                         Then Play("FT_CAIXA")
                      EndIf
                 Case (PARAM_APRAZOAUTOMAT="S" And PARAM_AVISTADUPLIC="S") Or
                      (PARAM_AVISTAAUTOMAT="S" And
                       ([FaturaC->Forma de Pagamento]="CD" Or
                        [FaturaC->Forma de Pagamento]="CT")):
                      CX_CONTA_CAIXA=PARAM_CONTA_CAIXA
                      If Estorno_DPCR_Ok
                         Then Play("FT_DUPLI")
                      EndIf
               EndSwitch
          Case [FaturaC->Tipo de Pagamento]="P":
               If PARAM_AVISTAAUTOMAT="S"
                  Then 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] And [Forma de Pagamento]<>"DE"
                                    Then CX_CONTA_CAIXA=PARAM_CONTA_CAIXA
                                         CX_VRLANC     =[Valor]
                                         If Verifica_Caixa()
                                            Then Play("FT_CAIXA")
                                         EndIf
                                 EndIf
                                 Moveto "FaturaV"
                                 Skip
                                 If EOT() Then QuitLoop EndIf
                               EndWhile
                       EndIf
               EndIf           
               If PARAM_APRAZOAUTOMAT="S"
                  Then CX_CONTA_CAIXA=PARAM_CONTA_CAIXA
                       If Estorno_DPCR_Ok
                          Then Play("FT_DUPLI")
                       EndIf
               EndIf
        EndSwitch
EndIf

Moveto "FaturaC"

If PARAM_CHEQUES="S"       Then CHEQUES()        EndIf
;;;If PARAM_CONSIGNACAO  ="S" Then Play("FT_CONSI") EndIf
If PARAM_TRANSFERENCIA="S" Then Play("FT_TRANS") EndIf
If Origem_Nota="TROCA"     Then Play("FT_DEVOL") EndIf

If Search("INDUST",[FaturaC->Descricao da Destinacao])>0 And [FaturaC->Tipo Movimento Estoque]="S" And
   SYS_CODIGO_CLIENTE="8888"
   Then Play("FT_PEND")
EndIf   

If Search("ENTREGA FUTURA",[FaturaC->Descricao da Destinacao])>0 And 
   [FaturaC->Tipo Movimento Estoque]="S" And
   Origem_Nota="BALCAO" And     
   SYS_CODIGO_CLIENTE="8888"
   Then Play("FT_PEF")
EndIf

;*********** Atualiza Ficha Financeira do Cliente ***********
If [FaturaC->Tipo]="C" And
   [FaturaC->Tipo Movimento Estoque]="S" And
   ((Search("VEND",[FaturaC->Descricao da Destinacao])>0) Or
    (Search("SERV",[FaturaC->Descricao da Destinacao])>0))
   Then Moveto "\\Sistemas\\Cadastro\\FichaCli"
        Moveto [Codigo]
        Locate [FaturaC->Codigo]
        If Not RetVal
           Then End Down
                [Codigo                  ]=[FaturaC->Codigo]
                [Data da Primeira Compra ]=[FaturaC->Data de Emissao]
                [Valor da Primeira Compra]=[FaturaC->Valor Nota Fiscal]
           Else If IsLockRecord()
                   Then Mensagem("Ficha financeira do Cliente "+[FaturaC->Codigo]+
                                 " em uso, Liberar antes de prosseguir !")
                        IsLockRecord()
                EndIf    
        EndIf
        If IsBlank([Data da Primeira Compra ])
           Then [Data da Primeira Compra ]=[FaturaC->Data de Emissao  ]
                [Valor da Primeira Compra]=[FaturaC->Valor Nota Fiscal]
        EndIf
        If [FaturaC->Valor Nota Fiscal]>=[Maior Fatura]
           Then [Maior Fatura        ]=[FaturaC->Valor Nota Fiscal]
                [Data da Maior Fatura]=[FaturaC->Data de Emissao  ]
        EndIf
        If [Data da Ultima Compra ]<=[FaturaC->Data de Emissao  ]
           Then [Data da Ultima Compra ]=[FaturaC->Data de Emissao  ]
                [Valor da Ultima Compra]=[FaturaC->Valor Nota Fiscal]
        EndIf
        UnLockRecord
EndIf

;****** Finalizando Procedure **************************************************
Moveto "NotaC" UnLockRecord

Switch 
  Case Origem_Nota="FATURA" :
       If Not IMPRIMIR_CARREGAMENTO
          Then SaveTables
       EndIf
  Case Origem_Nota="TROCA"  :  
       Moveto "NotaI"  UnLockRecord
       Moveto "NotaV"  UnLockRecord
       Moveto "NotaIC" UnLockRecord
       SaveTables
  OtherWise            : SaveTables    
EndSwitch

EndProc ;(Nota)

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Nota(VERIFICA_CONSULTA)
Release Procs Nota
