;** 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              
;Ultima Alteracao: 13/13/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Aliquota de reducao base de calculo substituicao tributaria                                        
;Ultima Alteracao: 19/03/2013 por Bruno Carvalho
;Motivo Alteracao: Comentado a linha "Fator Conversao" quando utilizado nos Itens 
;Ultima Alteracao: 19/03/2013 por Bruno Carvalho
;Motivo Alteracao: Comentado a linha onde utilizava o campo/variavel "NBM"
;Ultima Alteracao: 20/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes VENDA ENTREGA FUTURA                                        
;Ultima Alteracao: 12/02/2014 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Simples Nacional c/ calculo de ICMS, ST com redu‡Æo BC 
;Ultima Alteracao: 24/06/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes quando forma de pagamento for cartÆo de debito "CD"
;Ultima Alteracao: 05/09/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado quando existir tabela de agrupamento de itens 
;Ultima Alteracao: 09/09/2014 por Bruno/Andrey
;Motivo Alteracao: Ajustes "NotaIG" 
;Ultima Alteracao: 04/03/2015 por Andrey Fillipe 
;Motivo Alteracao: Ajustes se a Forma de Pagamento]="DE" e SYS_CODIGO_CLIENTE="0227" gerar caixa e banco  
;Ultima Alteracao: 18/11/2015 por Kamila Gomes
;Motivo Alteracao: Adicionada tabela NotaICom - Complemento do Item
;Ultima Alteracao: 30/11/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Ft_CxaS, Ft_TITUL                            
;Ultima Alteracao: 07/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: exclusao referencia ao campo INSS
;Ultima Alteracao: 07/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: exclusao referencia ao campo IR se nÆo for utilizado!
;Ultima Alteracao: 10/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes atualizacao a receber/pagar/caixa              
;Ultima Alteracao: 17/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes procedimentos              
;Ultima Alteracao: 05/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes procedimentos              
;Ultima Alteracao: 05/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes getp_titulo() em Carrega_Parametros()
;Ultima Alteracao: 04/02/2016 por Kamila Gomes 
;Motivo Alteracao: Ajustes e InclusÆo tabela "FatICom"
;Ultima Alteracao: 22/02/2016 por Kamila Gomes 
;Motivo Alteracao: Ajustes e InclusÆo Cupom Fiscal Eletr“nico
;Ultima Alteracao: 18/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Entrada ou Troca com credito gerar titulo de credito a pagar
;Ultima Alteracao: 18/03/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes Gerar Faticom somente se origem igual a FATURA
;Ultima Alteracao: 28/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Dados de Importa‡Æo                            
;Ultima Alteracao: 01/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Compra Sucata PRALUM                           
;Ultima Alteracao: 12/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Forma PG = NP, nota promissoria sempre gera a receber
;Ultima Alteracao: 12/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Venda Sucata PRALUM                           
;Ultima Alteracao: 20/04/2016 por Kamila Gomes
;Motivo Alteracao: Alterada Faticom e Notaicom para FaturICM e  NotaICM
;Ultima Alteracao: 14/06/2014 por Bruno Carvalho
;Motivo Alteracao: Alterado FATUROCP -> FaturaCC e ajustado dados 
;Ultima Alteracao: 08/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gravar CMC7 notav                             
;Ultima Alteracao: 04/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes dados partilha icms                             
;Ultima Alteracao: 15/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gerar caixa automatico/a prazo automatico      
;Ultima Alteracao: 18/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes estorno titulos de credito so a pagar
;Ultima Alteracao: 06/03/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado REQ_TRANSF_DEVOLUCAO() -> Processo p/ gerar requisi‡Æo de devolu‡Æo #0294#                       
;Ultima Alteracao: 03/04/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes compras a vista data de emissao            
;Ultima Alteracao: 20/04/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Metal Minas                                
;Ultima Alteracao: 15/05/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Valor Frete Cotado] ao adicionar campos no "NOTAC"
;Ultima Alteracao: 19/06/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes entradas/compras a vista NP gerar a pagar  
;Ultima Alteracao: 03/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes fichacli michelle cosmeticos                
;Ultima Alteracao: 11/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CL=CartÆo Parcelado
;Ultima Alteracao: 01/08/2017 por Bruno Carvalho
;Motivo Alteracao: Removido da proc NOTA() -> [Numero Nota Original]
;Ultima Alteracao: 05/08/2017 por Bruno Carvalho
;Motivo Alteracao: Substituido [Valor IR] -> [Valor DebitoCredito] e [Valor INSS] -> [Valor TC]
;Ultima Alteracao: 11/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Valor TC, Valor DebitoCredito
;Ultima Alteracao: 31/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desconto item
;Ultima Alteracao: 06/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ICMS ST FEM
;Ultima Alteracao: 13/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes indicador de presen‡a
;Ultima Alteracao: 26/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos calculos da nota
;Ultima Alteracao: 25/10/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ gravar no nota "Itens Pedido_Compra e Item_Pedido_Compra ao gravar dados do FATURAI
;Ultima Alteracao: 10/11/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gravar valor devolucao             
;Ultima Alteracao: 20/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes dados expedicao                    
;Ultima Alteracao: 02/03/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes SIRI nÆo agrupar Itens                     

TAB_Ref="FaturaC"
;-- Opera‡Æo s¢ para Compra ----------------------------------------------------
If (Sys_Codigo_Cliente="0377" or Sys_Codigo_Cliente="0395" ) And
   [FaturaC->Tipo Movimento Estoque]="E" And
   Search("COMPRA",[FaturaC->Descricao da Destinacao])>0 And
   Search("SUCATA",[FaturaC->Descricao da Destinacao])>0
   Then Play "FT_ENOTA"
        Return
EndIf   

;*******************************************************************************
;* Rotina p/ Estornar Movimenta‡Æo                                             *
;*******************************************************************************
Proc REQ_TRANSF_DEVOLUCAO(PARAM)
Private TEMP

If SYS_CODIGO_CLIENTE<>"0294" Or Upper(SubStr(Directory(),1,2))<>"X:"
   Then Return False
EndIf   

If PARAM="VERIFICA"
   Then TEMP=False
        Switch     
           Case Upper(Tab_Ref)="NOTAC" And ([NotaC->Codigo da Empresa]="0001"   And 
                                            [NotaC->Tipo Movimento Estoque]="E" And 
                                            Search("DEVOL",Upper([NotaC->Descricao da Destinacao]))>0)   :
                TEMP=True
           Case Upper(Tab_Ref) = "FATURAC" And ([FaturaC->Codigo da Empresa]="0001"   And 
                                                [FaturaC->Tipo Movimento Estoque]="E" And
                                                Search("DEVOL",Upper([FaturaC->Descricao da Destinacao]))>0) :
                TEMP=True      
        EndSwitch
        Return TEMP
EndIf   

TIPO_REQUISICAO = PARAM
Play "FT_RQNC"

Release Vars TIPO_REQUISICAO

EndProc ;REQ_TRANSF_DEVOLUCAO()

;*******************************************************************************
;* Grava Notas                                                                 *
;*******************************************************************************
Proc NOTA(Origem_Nota)
Private Origem_Nota,ATUALIZA_NUM_NOTA,destinok

;;;If Not IsAssigned(PARAM_AGRUPA_ITEM)
;;;   Then If SYS_CODIGO_CLIENTE="0227" And SubStr(Upper(Directory()),1,2)="X:"
;;;           Then PARAM_AGRUPA_ITEM = True
;;;           Else PARAM_AGRUPA_ITEM = False
;;;        EndIf                            
;;;EnDIf        

Switch
  Case Origem_Nota="FATURA" : Aguarde("Gerando e atualizando dados "+Opcaoc+" "+NOTAFISC)
  Case Origem_Nota="CFe"    : 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 Complemento de Itens se Existir ********************************
Moveto "NotaICM"      
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 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

;****** Excluir Itens Agrupados se Existir *********************************
;;If PARAM_AGRUPA_ITEM
;;   Then Moveto "NotaIG"
;;        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

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  ]
[IndPres                  ] = [FaturaC->IndPres                  ]
[CFO                      ] = [FaturaC->CFO                      ]
[Atualiza Estoque         ] = [FaturaC->Atualiza Estoque         ]
[Tipo Movimento Estoque   ] = [FaturaC->Tipo Movimento Estoque   ]
[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 TC                 ] = [FaturaC->Valor TC                 ]
[Valor Devolucao          ] = [FaturaC->Valor Devolucao          ]
[Valor DebitoCredito      ] = [FaturaC->Valor DebitoCredito      ]
[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 Frete Cotado       ] = [FaturaC->Valor Frete Cotado       ]
[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             ]
[Numero da Of             ] = [FaturaC->Numero da Of             ]
[Observacao na Nota Fiscal] = [FaturaC->Observacao na Nota Fiscal]
[Situacao                 ] = ""
[Exportado_Caixa          ] = ""
[Numero_Carregamento      ] = [FaturaC->Numero_Carregamento      ]
[Valor Desconto NTributado] = [FaturaC->Valor Desconto NTributado]

[Numero da Expedicao      ] = [FaturaC->Numero da Expedicao      ]
[Origem da Expedicao      ] = [FaturaC->Origem da Expedicao      ]
                       
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="CFe" :
       [Sistema Gerador          ] = "CF"      
       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"
       [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 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" 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

;****** 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                ]
          [Codigo CMC7        ] = [FaturaV->Codigo CMC7       ]

          [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" Or Origem_Nota="TROCA"
   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 Valor de Importa‡Æo ************************** 
        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        ]
          [Tipo_ViaTransporte      ]=[Faturidd->Tipo_ViaTransporte      ]
          [Valor_AFRMM             ]=[Faturidd->Valor_AFRMM             ]
          [Tipo_Intermediacao      ]=[Faturidd->Tipo_Intermediacao      ]
          [CNPJ_AdqEncomendante    ]=[Faturidd->CNPJ_AdqEncomendante    ]
          [UF_AdqEncomendante      ]=[Faturidd->UF_AdqEncomendante      ]
          [Codigo_Exportador       ]=[Faturidd->Codigo_Exportador       ]
          [Nome_Exportador         ]=[Faturidd->Nome_Exportador         ]
          UnLockRecord     
                 
          Moveto "FaturIDD"
          Skip
          If EOT() Then QuitLoop EndIf                                                 
        EndWhile

        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           ]
          [Sequencia_Item_NaAdicao ]=[Faturiad->Sequencia_Item_NaAdicao ]
          [Codigo_Fabricante       ]=[Faturiad->Codigo_Fabricante       ]
          [Nome_Fabricante         ]=[Faturiad->Nome_Fabricante         ]
          [Valor_Desconto_Adicao   ]=[Faturiad->Valor_Desconto_Adicao   ]
          [Numero_AtoConc_Drawback ]=[Faturiad->Numero_AtoConc_Drawback ]
          UnLockRecord 
                            
          Moveto "FaturIAD"
          Skip
          If EOT() Then QuitLoop EndIf  
        EndWhile
        
EndIf

;****** Gera Item da Nota Fiscal **************************
For io From 1 To 2
  Switch
    Case io = 1 : TabRefI = "FaturaI"
                  TabefNI = "NotaI"
    Case io = 2 : TabRefI = "FaturaIG"
                  TabefNI = "NotaIG"
  EndSwitch                      
  
  If io = 2
     Then If Not PARAM_AGRUPA_ITEM Or Origem_Nota<>"FATURA" Or IsEmpty("FaturaIG")
             Then Loop
          EndIf
  EndIf    
  
  Moveto TabRefI  
  Moveto [Numero da OF]
  Locate [FaturaC->Numero da OF]
  While [Numero da OF]=[FaturaC->Numero da OF]
    CopyToArray REG_FATURAI
    
    Moveto TabefNI
    End Down
    
    [Codigo da Empresa        ] = [FaturaC->Codigo da Empresa           ]
    [Numero do Documento      ] = NOTAFISC
    [Serie do Documento       ] = SERIEFISC
    [Item do Documento        ] = REG_FATURAI["Item da OF"              ]
    [Numero Pedido_Orcamento  ] = REG_FATURAI["Numero Pedido_Orcamento" ]
    [Item Pedido_Orcamento    ] = REG_FATURAI["Item Pedido_Orcamento"   ]
    [Tipo do Item             ] = REG_FATURAI["Tipo do Item"            ]
    [Codigo do Item           ] = REG_FATURAI["Codigo do Item"          ]
    [Descricao do Item        ] = REG_FATURAI["Descricao do Item"       ]
    [Codigo da Cor_Tecido     ] = REG_FATURAI["Codigo da Cor_Tecido"    ]
    [Descricao da Cor_Tecido  ] = REG_FATURAI["Descricao da Cor_Tecido" ]
    [Tamanho                  ] = REG_FATURAI["Tamanho"                 ]
    [Quantidade               ] = REG_FATURAI["Quantidade"              ]
    [Unidade Fiscal           ] = REG_FATURAI["Unidade Fiscal"          ]
    [Preco Unitario           ] = REG_FATURAI["Preco Unitario"          ]
    [Tipo Desconto Item       ] = REG_FATURAI["Tipo Desconto Item"      ]
    [Taxa Desconto Unitario   ] = REG_FATURAI["Taxa Desconto Unitario"  ]
    [Valor Desconto Unitario  ] = REG_FATURAI["Valor Desconto Unitario" ]
    [Valor Desconto Item      ] = REG_FATURAI["Valor Desconto Item"     ]
    [Preco Total              ] = REG_FATURAI["Preco Total"             ]
    [Preco Unitario Tabela    ] = REG_FATURAI["Preco Unitario Tabela"   ] 
    [Custo Medio Unitario     ] = REG_FATURAI["Custo Medio Unitario"    ]
    [CFO                      ] = REG_FATURAI["CFO"                     ]
    [NCM                      ] = REG_FATURAI["NCM"                     ] 
    [Taxa Desconto Total      ] = REG_FATURAI["Taxa Desconto Total"     ]
    [Valor Desconto Total     ] = REG_FATURAI["Valor Desconto Total"    ]
    [Valor Frete Total        ] = REG_FATURAI["Valor Frete Total"       ]
    [Valor Seguro Total       ] = REG_FATURAI["Valor Seguro Total"      ]
    [Valor OutDesp Total      ] = REG_FATURAI["Valor OutDesp Total"     ]
  
    Switch
      Case (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB") And REG_FATURAI["CSOSN"]<>"900":
            Switch
             Case REG_FATURAI["CSOSN"]="101" : [Tipo Tributacao] = SubStr(REG_FATURAI["Tipo Tributacao"],1,1)+"90"  [Tributacao de ICMS]="O"
             Case REG_FATURAI["CSOSN"]="102" : [Tipo Tributacao] = SubStr(REG_FATURAI["Tipo Tributacao"],1,1)+"90"  [Tributacao de ICMS]="O"
             Case REG_FATURAI["CSOSN"]="103" : [Tipo Tributacao] = SubStr(REG_FATURAI["Tipo Tributacao"],1,1)+"90"  [Tributacao de ICMS]="O"
             Case REG_FATURAI["CSOSN"]="201" : [Tipo Tributacao] = SubStr(REG_FATURAI["Tipo Tributacao"],1,1)+"10"  [Tributacao de ICMS]="S"
             Case REG_FATURAI["CSOSN"]="202" : [Tipo Tributacao] = SubStr(REG_FATURAI["Tipo Tributacao"],1,1)+"10"  [Tributacao de ICMS]="S"
             Case REG_FATURAI["CSOSN"]="203" : [Tipo Tributacao] = SubStr(REG_FATURAI["Tipo Tributacao"],1,1)+"30"  [Tributacao de ICMS]="S"
             Case REG_FATURAI["CSOSN"]="300" : [Tipo Tributacao] = SubStr(REG_FATURAI["Tipo Tributacao"],1,1)+"90"  [Tributacao de ICMS]="O"
             Case REG_FATURAI["CSOSN"]="400" : [Tipo Tributacao] = SubStr(REG_FATURAI["Tipo Tributacao"],1,1)+"90"  [Tributacao de ICMS]="O"
             Case REG_FATURAI["CSOSN"]="500" : [Tipo Tributacao] = SubStr(REG_FATURAI["Tipo Tributacao"],1,1)+"60"  [Tributacao de ICMS]="S"
             Case REG_FATURAI["CSOSN"]="900" : [Tipo Tributacao] = SubStr(REG_FATURAI["Tipo Tributacao"],1,1)+"90"  [Tributacao de ICMS]="O"
            EndSwitch
            [Aliquota Reduzida BCICMS ] = BlankNum()
            [Aliquota de ICMS         ] = BlankNum()
            [ICMS_BC                  ] = BlankNum()
            [Valor do ICMS            ] = BlankNum()
  
      Case (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB") And REG_FATURAI["CSOSN"]="900":
            [Tipo Tributacao          ] = SubStr(REG_FATURAI["Tipo Tributacao"],1,1)+"90"
            [Tributacao de ICMS       ] = "O"
            [Aliquota Reduzida BCICMS ] = REG_FATURAI["Aliquota Reduzida BCICMS"]
            [Aliquota de ICMS         ] = REG_FATURAI["Aliquota de ICMS"        ]
            [ICMS_BC                  ] = REG_FATURAI["ICMS_BC"                 ]
            [Valor do ICMS            ] = REG_FATURAI["Valor do ICMS"           ]
  
      OtherWise:
            [Tipo Tributacao          ] = REG_FATURAI["Tipo Tributacao"         ]
            [Tributacao de ICMS       ] = REG_FATURAI["Tributacao de ICMS"      ]
            [Aliquota Reduzida BCICMS ] = REG_FATURAI["Aliquota Reduzida BCICMS"]
            [Aliquota de ICMS         ] = REG_FATURAI["Aliquota de ICMS"        ]
            [ICMS_BC                  ] = REG_FATURAI["ICMS_BC"                 ]
            [Valor do ICMS            ] = REG_FATURAI["Valor do ICMS"           ]
    EndSwitch
  
    [MVA                      ] = REG_FATURAI["MVA"                      ]
    [ICMS_ST_Aliquota Reduzida] = REG_FATURAI["ICMS_ST_Aliquota Reduzida"]
    [ICMS_ST_Aliquota         ] = REG_FATURAI["ICMS_ST_Aliquota"         ]
    [ICMS_ST_BC               ] = REG_FATURAI["ICMS_ST_BC"               ]
    [ICMS_ST_Valor            ] = REG_FATURAI["ICMS_ST_Valor"            ]
                                  
    [CSOSN                    ] = REG_FATURAI["CSOSN"                    ]
    [ICMS_CredSN_Aliquota     ] = REG_FATURAI["ICMS_CredSN_Aliquota"     ]
    [ICMS_CredSN_Valor        ] = REG_FATURAI["ICMS_CredSN_Valor"        ]
                                  
    [IPI_CST                  ] = REG_FATURAI["IPI_CST"                  ]
    [Tributacao de IPI        ] = REG_FATURAI["Tributacao de IPI"        ]
    [Aliquota Reduzida BCIPI  ] = REG_FATURAI["Aliquota Reduzida BCIPI"  ]
    [Aliquota de IPI          ] = REG_FATURAI["Aliquota de IPI"          ]
    [Valor IPI por Unidade    ] = REG_FATURAI["Valor IPI por Unidade"    ]
    [IPI_BC                   ] = REG_FATURAI["IPI_BC"                   ]
    [Valor do IPI             ] = REG_FATURAI["Valor do IPI"             ]
                                  
    [Tributacao de ISSQN      ] = REG_FATURAI["Tributacao de ISSQN"      ]
    [Aliquota de ISSQN        ] = REG_FATURAI["Aliquota de ISSQN"        ]
    [ISSQN_BC                 ] = REG_FATURAI["ISSQN_BC"                 ]
    [Valor do ISSQN           ] = REG_FATURAI["Valor do ISSQN"           ]
    [Codigo_Servico           ] = REG_FATURAI["Codigo_Servico"           ]
    [ISSQN_UF                 ] = REG_FATURAI["ISSQN_UF"                 ]
    [ISSQN_Municipio          ] = REG_FATURAI["ISSQN_Municipio"          ]
                                  
    [Peso Liquido             ] = REG_FATURAI["Peso Liquido"             ]
    [Peso Embalagem           ] = REG_FATURAI["Peso Embalagem"           ]
    [Volumes                  ] = REG_FATURAI["Volumes"                  ]
    [Comissao do Item         ] = REG_FATURAI["Comissao do Item"         ]
    [Codigo da Tabela         ] = REG_FATURAI["Codigo da Tabela"         ]
                                  
    [PIS_CST                  ] = REG_FATURAI["PIS_CST"                  ]
    [PIS_Aliquota             ] = REG_FATURAI["PIS_Aliquota"             ]
    [PIS_BC                   ] = REG_FATURAI["PIS_BC"                   ]
    [PIS_Valor                ] = REG_FATURAI["PIS_Valor"                ]
                                  
    [COFINS_CST               ] = REG_FATURAI["COFINS_CST"               ]
    [COFINS_Aliquota          ] = REG_FATURAI["COFINS_Aliquota"          ]
    [COFINS_BC                ] = REG_FATURAI["COFINS_BC"                ]
    [COFINS_Valor             ] = REG_FATURAI["COFINS_Valor"             ]
                                  
    [II_BC                    ] = REG_FATURAI["II_BC"                    ]
    [II_Valor Imposto         ] = REG_FATURAI["II_Valor Imposto"         ]
    [II_Valor DespAduan       ] = REG_FATURAI["II_Valor DespAduan"       ]
    [II_Valor IOF             ] = REG_FATURAI["II_Valor IOF"             ]
  
    [Informacoes_Adicionais   ] = REG_FATURAI["Informacoes_Adicionais"   ]
    [Item_Pedido_Compra       ] = REG_FATURAI["Item_Pedido_Compra"       ]
    [Numero_Pedido_Compra     ] = REG_FATURAI["Numero_Pedido_Compra"     ]
    
    [ICMS_Valor_Desonerado    ] = REG_FATURAI["ICMS_Valor_Desonerado"    ]
    [ICMS_Motivo_Desoneracao  ] = REG_FATURAI["ICMS_Motivo_Desoneracao"  ]

    [IPI Devolvido_Porcentagem] = REG_FATURAI["IPI Devolvido_Porcentagem"]
    [IPI Devolvido_Valor      ] = REG_FATURAI["IPI Devolvido_Valor"      ]
    [Valor TotTributos        ] = REG_FATURAI["Valor TotTributos"        ]
    
    Switch   
      Case Origem_Nota="BALCAO" :
           [Entrega           ] = REG_FATURAI["Entrega"                  ]
           [Data a Entregar   ] = REG_FATURAI["Data a Entregar"          ]
           [Data de Entrega   ] = REG_FATURAI["Data de Entrega"          ]  
    EndSwitch 
    UnLockRecord
                                   
    If io=1 And [FaturaC->Tipo Movimento Estoque]="S" 
       Then While True
              Moveto "\\Sistemas\\Estoque\\EstqPrm"
              Moveto [Codigo da Empresa]
              Locate [FaturaC->Codigo da Empresa],REG_FATURAI["Codigo do Item"]
              If Not RetVal
                 Then End Down
                      [Codigo da Empresa   ]=[FaturaC->Codigo da Empresa]
                      [Codigo do Item      ]=REG_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 TabRefI
    Skip
    If EOT() Then QuitLoop EndIf
  EndWhile
Endfor 

;******** Rotina Complementos dos Itens ****************************************
If Origem_Nota="FATURA"
   Then
      Moveto "FaturICM" 
      Moveto [Numero da OF]
      Locate [FaturaC->Numero da OF]
      While [Numero da OF]=[FaturaC->Numero da OF]
        If RetVal
         Then While [Numero da OF]=[FaturaC->Numero da OF]
                Moveto "NotaICM" 
                End
                Down ;; Rotina em desenvolvimento a partir de 11/09/2015
      
                [Codigo da Empresa      ] = [FaturaC->Codigo da Empresa      ]
                [Numero do Documento    ] = NOTAFISC
                [Serie do Documento     ] = SERIEFISC  
                [Item do Documento      ] = [FaturICM->Item da OF             ]
                [Codigo do Item         ] = [FaturICM->Codigo do Item         ]          

                [FCP_BC                 ] = [FaturICM->FCP_BC                 ] 
                [FCP_Aliquota           ] = [FaturICM->FCP_Aliquota           ]  
                [FCP_Valor              ] = [FaturICM->FCP_Valor              ]  
                
                [FCP_ST_BC              ] = [FaturICM->FCP_ST_BC              ] 
                [FCP_ST_Aliquota        ] = [FaturICM->FCP_ST_Aliquota        ]  
                [FCP_ST_Valor           ] = [FaturICM->FCP_ST_Valor           ]  
              
                [PST Aliquota Consumidor] = [FaturICM->PST Aliquota Consumidor] 
                [FCP_STRet_BC           ] = [FaturICM->FCP_STRet_BC           ] 
                [FCP_STRet_Aliquota     ] = [FaturICM->FCP_STRet_Aliquota     ]  
                [FCP_STRet_Valor        ] = [FaturICM->FCP_STRet_Valor        ]  
              
                [FCP_UFDest_BC          ] = [FaturICM->FCP_UFDest_BC          ] 
                [FCP_UFDest_Aliquota    ] = [FaturICM->FCP_UFDest_Aliquota    ] 
                [FCP_UFDest_Valor       ] = [FaturICM->FCP_UFDest_Valor       ]  
              
                [ICMS_UFDest_BC         ] = [FaturICM->ICMS_UFDest_BC         ] 
                [ICMS_UFDest_Aliquota   ] = [FaturICM->ICMS_UFDest_Aliquota   ] 
                [ICMS_UFDest_Valor      ] = [FaturICM->ICMS_UFDest_Valor      ]  
              
                [ICMS_Inter_Aliquota    ] = [FaturICM->ICMS_Inter_Aliquota    ] 
                [ICMS_InterPart_Aliquota] = [FaturICM->ICMS_InterPart_Aliquota] 
                [ICMS_UFRemet_Valor     ] = [FaturICM->ICMS_UFRemet_Valor     ] 
              
                UnLockRecord
                 
                Moveto "FaturICM"
                Skip
                If EOT() Then QuitLoop EndIf
              EndWhile
        EndIf
        Skip
        If EOT() Then QuitLoop EndIf
      EndWhile
EndIf   

 
Moveto "FaturaC"

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 
       Do_It!
       SaveTables
        
       View NOWINDOW "\\Sistemas\\Ctapag\\Titulos"  
       View NOWINDOW "\\Sistemas\\Ctapag\\Titbaixa" 
   
       View NOWINDOW "\\Sistemas\\CtaRec\\Duplic"
       View NOWINDOW "\\Sistemas\\CtaRec\\Dupbaixa"

       View NOWINDOW "\\Sistemas\\CtaCor\\SaldCont"
       View NOWINDOW "\\Sistemas\\CtaCor\\MovCont"
   
       View NOWINDOW "DupC"
       View NOWINDOW "DupI"
       View NOWINDOW "DupNF"
       
       CoEditKey
       
        OP_MOVCX        ="ESTORNAR"
        OP_MOVDP        ="ESTORNAR"

        ;-- saidas -------------------------------------------------------------
        Estorno_CR_Ok   =True
        Estorno_CPTC_Ok =True
                              
        If PARAM_AVISTAAUTOMAT="S"
           Then Play("FT_CAIXA")
        EndIf   
        If PARAM_APRAZOAUTOMAT="S"
           Then If PARAM_AVISTADUPLIC="S"
                   Then Play("FT_CAIXA")
                EndIf
                Play("FT_DUPLI")
        EndIf
        Play("FT_GTCS")
                      
        ;-- Entradas -----------------------------------------------------------
        Estorno_CP_Ok  =True
        Estorno_CRTC_Ok=True
        
        If PARAM_AVISTAAUTOMAT="S"
           Then Play("FT_CXAS")
        EndIf
        If PARAM_APRAZOAUTOMAT="S"
           Then If PARAM_AVISTADUPLIC="S"
                   Then Play("FT_CXAS")
                EndIf
                Play("FT_TITUL")
        EndIf
        Play("FT_GTCS")


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

        ;-- saidas -------------------------------------------------------------
        If [FaturaC->Tipo Movimento Estoque]="S" And [FaturaC->Valor DebitoCredito]<=0 ;todas saidas e troca com d‚bito
           Then 
                if [FaturaC->Tipo de Pagamento]<>"O" ; Not outros
                   then
                        if PARAM_AVISTAAUTOMAT="S"
                           then 
                               CX_VRLANC=0 ; zerar para acumular saidas
                               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
                                            [FaturaV->Forma de Pagamento]<>"NP" And
                                            [FaturaV->Forma de Pagamento]<>"CD" And
                                            [FaturaV->Forma de Pagamento]<>"CT" And 
                                            [FaturaV->Forma de Pagamento]<>"CL" And 
                                          ( [FaturaV->Forma de Pagamento]<>"DE" Or SYS_CODIGO_CLIENTE="0227" )
                                            Then 
                                                 If PARAM_TITCRED="T"         And
                                                    [Forma de Pagamento]="TC" And
                                                    [Numero do Cartao  ]<>"" 
                                                    then
                                                         ;nÆo soma, utilizando TC selecionado
                                                    else 
                                                         CX_VRLANC=CX_VRLANC+[Valor]
                                                 endif
                                         EndIf
                                         
                                         Skip
                                         If EOT() Then QuitLoop EndIf
                                       EndWhile
                                       
                                       If CX_VRLANC>0 And Verifica_Caixa([FaturaC->Codigo da Empresa])
                                          Then Play("FT_CAIXA")
                                       EndIf
                               EndIf              
                        endif
                        if PARAM_APRAZOAUTOMAT="S"
                           then If Estorno_CR_Ok
                                   Then Play("FT_DUPLI")
                                EndIf
         
                        EndIf
                endif           
                
                If Estorno_CPTC_Ok
                   then Play("FT_GTCS")
                endif   
        endif


        ;-- Entradas -----------------------------------------------------------
        If [FaturaC->Tipo Movimento Estoque]="E" or
           ( [FaturaC->Tipo Movimento Estoque]="S" And [FaturaC->Valor DebitoCredito]>0 ) ;entradas e troca com cr‚dito
           Then 
                if [FaturaC->Tipo de Pagamento]<>"O" ; not outros
                   then 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] And
                                            [FaturaV->Forma de Pagamento]<>"NP" And
                                            [FaturaV->Forma de Pagamento]<>"CD"
                                            then
                                                 If PARAM_TITCRED="T"         And
                                                    [Forma de Pagamento]="TC" And
                                                    [Numero do Cartao  ]<>"" 
                                                    then
                                                         ;nÆo soma, utilizando TC selecionado
                                                    else 
                                                         CX_VRLANC=CX_VRLANC+[Valor]
                                                 endif
                                         endif
                                         Skip
                                         If EOT() Then QuitLoop EndIf
                                       EndWhile
                                       
                                       If CX_VRLANC>0 And Verifica_Caixa([FaturaC->Codigo da Empresa])
                                          Then Play("FT_CXAS")
                                       EndIf
                               EndIf
                        endif
                        
                        if PARAM_APRAZOAUTOMAT="S"
                           then If Estorno_CP_Ok
                                   Then Play("FT_TITUL")
                                EndIf
                        Endif
                endif        
                        
                If Estorno_CPTC_Ok
                   then Play("FT_GTCS")
                endif   
                   
        endif
        
       
       Do_It!
       SaveTables
        
       Moveto "\\Sistemas\\Ctapag\\Titulos"   ClearImage
       Moveto "\\Sistemas\\Ctapag\\Titbaixa"  ClearImage
   
       Moveto "\\Sistemas\\CtaRec\\Duplic"    ClearImage
       Moveto "\\Sistemas\\CtaRec\\Dupbaixa"  ClearImage

       Moveto "\\Sistemas\\CtaCor\\SaldCont"  ClearImage
       Moveto "\\Sistemas\\CtaCor\\MovCont"   ClearImage
       
       Moveto "DupC"  ClearImage
       Moveto "DupI"  ClearImage
       Moveto "DupNF" ClearImage
   
       CoEditKey 
EndIf

;-- Estorno de Movimenta‡Æo Financeira -----------------------------------------
If REQ_TRANSF_DEVOLUCAO("VERIFICA")  
   Then Do_It!
        SaveTables
        
        View NOWINDOW "\\Sistemas\\Estoque\\Requisit"
        View NOWINDOW "\\Sistemas\\Estoque\\RqCabeca"
        View NOWINDOW "\\Sistemas\\Estoque\\Rqitem"
        CoEditKey
        
        REQ_TRANSF_DEVOLUCAO("TRANSFERENCIA")
        
        Do_It!
        SaveTables 
        
        Moveto "\\Sistemas\\Estoque\\Requisit" ClearImage
        Moveto "\\Sistemas\\Estoque\\RqCabeca" ClearImage
        Moveto "\\Sistemas\\Estoque\\Rqitem"   ClearImage
        CoEditKey
EndIf

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

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("VENDA ENTREGA FUTURA",[FaturaC->Descricao da Destinacao])>0 And 
   [FaturaC->Tipo Movimento Estoque]="S" And
   Origem_Nota="BALCAO"     
   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 
        destinok=true

        if sys_Codigo_cliente="0112"                            And
           Search("VEND",[FaturaC->Descricao da Destinacao])>0  And 
           Search("TROC",[FaturaC->Descricao da Destinacao])>0  
           then destinok=false
        endif
        
        if destinok
           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
        
        
        
EndIf

;-- Opera‡Æo s¢ para Venda Sucata ----------------------------------------------
If sys_codigo_Cliente="0377" and
   [FaturaC->Tipo Movimento Estoque]="S" And
   Search("VENDA",[FaturaC->Descricao da Destinacao])>0 and
   Search("SUCATA",[FaturaC->Descricao da Destinacao])>0
   then
        Do_It!
        SaveTables
          
        View NOWINDOW "Tbprcli"  
        View NOWINDOW "Tbprcit"  
         
        CoEditKey
    
        Moveto "FaturaI"  
        Moveto [Numero da OF]
        Locate [FaturaC->Numero da OF]
        While [Numero da OF]=[FaturaC->Numero da OF]
           
          while true
            Moveto "\\Sistemas\\Vendas\\Tbprcit" 
            moveto [Codigo da Tabela]
            locate [Faturac->Codigo da Tabela], [Faturac->Codigo], [FaturaI->Codigo do Item]
            if not retval
               then
                    end
                    down
                    [Codigo da Tabela]=[Faturac->Codigo da Tabela]
                    [Codigo          ]=[Faturac->Codigo          ]
                    [Codigo do Item  ]=[FaturaI->Codigo do Item  ]
                    [Lookup_item     ]=[FaturaI->Codigo do Item  ]
            endif
            if not islockrecord()
               then quitloop
            endif   
          endwhile
          if [FaturaC->Data de Emissao]>=[Data Ultimo Reajuste]
             then
                  [Preco Unitario      ]=[FaturaI->Preco Unitario ]
                  [Data Ultimo Reajuste]=[FaturaC->Data de Emissao]
                  [Taxa Ultimo Reajuste]=blanknum()
          endif   
          unlockrecord
           
          Moveto "FaturaI"  
          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

       Do_It!
       SaveTables
        
       Moveto "tbprcit"  ClearImage
       Moveto "tbprcli"  ClearImage
   
       CoEditKey  
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
