;** AC_NOTA ********************************************************************
;*  Rotina para atualizar Notas de Saidas que estÆo na rela‡Æo do FATURA       *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 11/11/2014 por Bruno Carvalho
;Ultima Alteracao: 01/02/2017 por Kamila Gomes
;Motivo Alteracao: Ajustes para sys_codigo_cliente = "0058" - Nova Componentes                         
;Ultima Alteracao: 31/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desconto item


; Essa rotina ‚ especifica apenas para registros que foram perdidos do NOTA, onde
; existe as ordens de faturamento, mas por algum motivo a tabela NOTA foi corrompida
; e perdeu os registros, assim, essa rotina ir  ajustar as notas conforme a rela‡Æo
; no Fatura. DEIXANDO CLARO QUE ESSA ROTINA NAO ATUALIZA O CAIXA BANCO OU CONTAS
; A RECEBER, para isso, se for o caso, tem parƒmetro, mas setado com FALSE, mas 
; ‚ preciso testes.

;*******************************************************************************
;* Grava Notas                                                                 *
;*******************************************************************************
Proc NOTA_ACERTO(Origem_Nota)
Private Origem_Nota,ATUALIZA_NUM_NOTA

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)
  OtherWise                 : Aguarde("Atualizando Dados")
EndSwitch  

Aguarde("Excluindo dados existentes "+NOTAFISC)
;****** 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

;****** Excluir Itens Agrupados se Existir *********************************
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

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 

Aguarde("Atualizando dados NotaC "+NOTAFISC)
;****** 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                   ] = CODCLIE
[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

Aguarde("Atualizando dados NotaV "+NOTAFISC)
;****** 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" 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

Aguarde("Atualizando dados NotaR "+NOTAFISC)  
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

        Aguarde("Atualizando dados NotaOCP "+NOTAFISC)  
        ;****** 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

        Aguarde("Atualizando dados NotaIAD "+NOTAFISC)  
        ;****** 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
        
        Aguarde("Atualizando dados NotaIDD "+NOTAFISC)  
        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

Aguarde("Atualizando dados NotaI "+NOTAFISC)  
;****** 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"          ]
                                  
    [Tributacao de IR         ] = REG_FATURAI["Tributacao de IR"         ]
    [Aliquota de IR           ] = REG_FATURAI["Aliquota de IR"           ]
    [Valor do IR              ] = REG_FATURAI["Valor do IR"              ]
    [Tributacao de INSS       ] = REG_FATURAI["Tributacao de INSS"       ]
    [Aliquota de INSS         ] = REG_FATURAI["Aliquota de INSS"         ]
    [Valor do INSS            ] = REG_FATURAI["Valor do INSS"            ]
                                  
    [Peso Liquido             ] = REG_FATURAI["Peso Liquido"             ]
    [Peso Embalagem           ] = REG_FATURAI["Peso Embalagem"           ]
    [Volumes                  ] = REG_FATURAI["Volumes"                  ]
    [Edita Descricao do Item  ] = REG_FATURAI["Edita Descricao do Item"  ]
    ;[Fator Conversao          ] = REG_FATURAI["Fator Conversao"          ]
    [Comissao do Item         ] = REG_FATURAI["Comissao do Item"         ]
    [Condicao de Pagamento    ] = REG_FATURAI["Condicao de Pagamento"    ]
    [Composicao de Dias       ] = REG_FATURAI["Composicao de Dias"       ]
    [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 DespAduan       ] = REG_FATURAI["II_Valor DespAduan"       ]
    [II_Valor IOF             ] = REG_FATURAI["II_Valor IOF"             ]
    [II_Valor Imposto         ] = REG_FATURAI["II_Valor Imposto"         ]
  
    [Informacoes_Adicionais   ] = REG_FATURAI["Informacoes_Adicionais"   ]
    
    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 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

DP_GERA_DUPLICATA = GERA_DUPLIC_CAIXA
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"         And
                                    [Forma de Pagamento]<>"CD"         
                                    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_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 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 para Setar Parƒmetros                                                *
;*******************************************************************************
Proc Checagem()

GetRecord "Estados" [FaturaC->UF] To REG_UF
If RetVal
   Then UF_ALIQUOTA_ICMS=REG_UF["Aliquota de ICMS"]
        UF_ALIQUOTA_ICMS_INTERNA =REG_UF["Aliquota de ICMS_INTERNA"]
   Else UF_ALIQUOTA_ICMS=BlankNum()
        UF_ALIQUOTA_ICMS_INTERNA =BlankNum()
EndIf

GetRecord "\\Sistemas\\Cadastro\\Empresas" [FaturaC->Codigo da Empresa] To REG_BUSCA_LOOKUP
If RetVal
   Then UF_EMPRESA=REG_BUSCA_LOOKUP["UF Empresa"]
        TPEMPR    =REG_BUSCA_LOOKUP["Tipo da Empresa"]
        ATIVEMPR  =REG_BUSCA_LOOKUP["Atividade"]
        CNPJNF_e  =Tira_CharNum(REG_BUSCA_LOOKUP["CGC Empresa"])
        NOMENF_e  =REG_BUSCA_LOOKUP["Razao Social Empresa"]
   Else UF_EMPRESA="??"
        TPEMPR    ="??"
        ATIVEMPR  ="??"
        CNPJNF_e  ="??"
        NOMENF_e  ="??"
EndIf

EndProc ;Checagem()

;*******************************************************************************
;* Rotina para checar cliente                                                  *
;*******************************************************************************
Proc Checagem_Cliente()
If SYS_CODIGO_CLIENTE = "0058"
  then GetRecord "\\Sistemas\\Cadastro\\Destinat" [FaturaC->Codigo] To REG_CLIENTE
        If RetVal
           Then CODCLIE =[FaturaC->Codigo]
           Else CODCLIE = "1793"
        EndIf
  else  CODCLIE =[FaturaC->Codigo]
EndIf

EndProc ;Checagem()

;*******************************************************************************
;* Rotina para Carregar Parametros                                             *
;*******************************************************************************
Proc Carrega_Parametros()
Private ParamF, ParamE

If IsEmpty("P_Balcao")
   Then Mensagem("N„o esta Configurado os Parametros para Digita‡„o [Saida/Balc„o]!")
        Return False
EndIf

If IsEmpty("\\Sistemas\\Estoque\\P_Entra")
   Then Mensagem("N„o esta Configurado os Parametros para Digita‡„o [Entrada/NE]!")
        Return False
EndIf

UnLockRecord
KeyPress "F7"
While True
  If Not IsLockRecord()
     Then QuitLoop
  EndIf
EndWhile

ParamF=False
Moveto "P_Balcao"
Moveto [Codigo_Empresa]
Locate [FaturaC->Codigo da Empresa]
If RetVal
   Then ParamF=True
        
        PARAM_ALTERA_FP="S"
        
        PARAM_EMPRESA                  =[Codigo_Empresa           ]
        PARAM_DESTINACAO               =[Codigo_Destinacao        ]
        PARAM_CONTA_CAIXA              =[Codigo_Conta_Caixa       ]
        PARAM_DATAS_VENCTOS            =[Datas_Vencimentos        ]
        PARAM_COR_TECIDO               =[Cor_Tecido               ]
        PARAM_TAMANHO                  =[Tamanho                  ]
        PARAM_DESCUNIT                 =[Desconto Unitario        ]
        PARAM_VOLUMES                  =[Volumes                  ]
        PARAM_SUBSTICMS                =[Substituicao ICMS        ]
        PARAM_PEDIDO                   =[Utiliza_Pedido           ]
        PARAM_ORCAMENTO                =[Utiliza_Orcamento        ]
        PARAM_ORDEM_SERVICO            =[Utiliza_OS               ]
        PARAM_BLOQUEIA_NEG             =[Bloqueia_Estoque_Negativo]
        PARAM_MULT_BCICMS              =[Multiplas_BC_ICMS        ]
        PARAM_NLCHQ_IGUAL_NF           =[NLCheque_Igual_NF        ]
        PARAM_IMPOSTOS                 =[Impostos                 ]
        PARAM_TABELA_PRECO             =[Tabela_Preco             ]
        PARAM_TRANSPORTADORA           =[Codigo_Transportadora    ]
        PARAM_TRANSFERENCIA            ="N"
        PARAM_CONSIGNACAO              ="N"
        PARAM_CHEQUES                  =[Utiliza_Controle_Cheques ]
        PARAM_RELAT_NF                 =[Script_Impressao_NF      ]
        PARAM_RELAT_ROMA               =[Script_Impressao_Romaneio]
        PARAM_RELAT_NP                 =[Script_Impressao_NP      ]
        PARAM_RELAT_CARNE              =[Script_Impressao_Carne   ]
        PARAM_CONTROLA_NITENS          =[Controla_Numero_Itens    ]
        PARAM_NITENS                   =[Numero_Itens             ] 
        PARAM_TAMANHO_DESCR            =[Tamanho_Descricao_Item   ]
        PARAM_NLINHAS_OBS              =[NLinhas_Obs_Campo_Itens  ]
        PARAM_NLCHQ_IGUAL_NF           =[NLCheque_Igual_NF        ]
        PARAM_NVIAS_ROMANEIO           =[NVias_Romaneio           ]
        PARAM_ENTREGA                  =[Entrega_Mercadoria       ]
        PARAM_RELAT_ENTREGA            =[Script_Impressao_Entrega ]
        PARAM_PORTA_ENTREGA            =[Porta_Impressao_Entrega  ]
        PARAM_LIMITE_CREDITO           =[Utiliza_Limite_Credito   ]
        PARAM_ALTERA_PRECO             =[Utiliza_Alteracao_Preco  ]
        PARAM_DIAS_ATRASO              =[Utiliza_Dias_Atraso      ]
        PARAM_CUPOM_FISCAL             =[Utiliza_Cupom_Fiscal     ]
        PARAM_CLIENTE                  =[Codigo_Cliente           ]
        PARAM_VENDEDOR                 =[Codigo_Vendedor          ]
        PARAM_COND_PAGTO               =[Codigo_Cond_Pagto        ]
        PARAM_FORMA_PAGTO              =[Codigo_Forma_Pagto       ]
        PARAM_UTILIZAVENDEDOR          =[Utiliza_Vendedor         ]
        PARAM_UTILIZACDBARRA           =[Utiliza_Codigo_Barras    ]
        PARAM_BLOQUEIA_REEMISSAO       =[Bloqueia_Reemissao_NF    ]
        PARAM_BLOQUEIA_IMPRESSAO2      =[Bloqueia_Impressao_2via  ]    
        PARAM_AVISTAAUTOMAT            =[Gera_VendasVista_Automat ]
        PARAM_APRAZOAUTOMAT            =[Gera_VendasPrazo_Automat ]
        PARAM_AVISTADUPLIC             =[Gera_Duplicatas_AVista   ]
        PARAM_TXJUROS                  =[Duplicata_TxJuros        ]
        PARAM_FORMA_TXJUROS            =[Duplicata_Forma_TxJuros  ]
        PARAM_DUPLIC_NUMERO            =[Gera_Duplicatas_Numero   ]
        
        PARAM_COMIS_ITEM               =[Comissao_Item            ]
        PARAM_COMIS_MARCA              =[Utiliza_Comissao_Marca   ]
        PARAM_CPGTO_ITEM               =[Utiliza_Cond_Pagto_Item  ]
        PARAM_TABPR_ITEM               =[Utiliza_Tabela_Preco_Item]
        PARAM_COMIS_VENCTO             =[Calcula_Comissao_Vencto  ]
        PARAM_DATA_BASE                =[Informa_Data_CalcVenctos ]
        PARAM_VISITA                   =[Utiliza_Visita           ]
        PARAM_BLOQUEIA_AUTORI          =[Bloqueia_Autorizados     ]
        
        PARAM_FATURA_IGUAL_OF          =[Gera_Fatura_Igual_OF     ]
        PARAM_BLOQVRVENCTO             =[Bloqueio Valor Vencto    ]
        
        If SYS_CODIGO_CLIENTE="0102" Or
           SYS_CODIGO_CLIENTE="0114" Or
           SYS_CODIGO_CLIENTE="0344"
           Then PARAM_CALC_COMIS_ITEM="S"
           Else PARAM_CALC_COMIS_ITEM="N"
        EndIf
        
        PARAM_UTILIZA_COMISSAO_VENDEDOR=[Utiliza_Comissao_Vendedor]
        PARAM_RATEIO_COMISSAO          =[Utiliza_Rateio_Comissao  ]
        PARAM_TRANSF_ULTCT             =[Utiliza_UltCust_Transfer ]
        PARAM_UTILIZA_COMISSAO_VENDREAL=[Utiliza_Comissao_VendReal]
        PARAM_UTILIZA_TABPR_CLIENTE    =[Utiliza_TabPreco_Cliente ]
        PARAM_UTILIZA_TABPR_REPRES     =[Utiliza_TabPreco_Repres  ]
        PARAM_PEGAPRECO_CPAGTO         =[Pega_Preco_Tabela_Cpagto ]
        
        PARAM_BLOQ_DESCTO              =[Utiliza_Bloqueio_Descto  ]
        PARAM_BLOQ_TPDESCTO            =[Tipo_Bloqueio_Descto     ]
        PARAM_BLOQ_TXDESCTO            =[Taxa_Bloqueio_Descto     ]
        PARAM_EXIBECUSTO               =[Exibe_Custo_Item_Consulta]
        
        PARAM_BLOQ_DESCTOUNIT          =[Utiliza_Bloqueio_DesctoUn]
        PARAM_BLOQ_TPDESCTOUNIT        =[Tipo_Bloqueio_DesctoUn   ]
        PARAM_BLOQ_TXDESCTOUNIT        =[Taxa_Bloqueio_DesctoUn   ]
        
        PARAM_DOC_NF   = [Not_Codigo do Documento  ]  
        PARAM_TIP_NF   = [Not_Tipo do Documento    ]  
        PARAM_SER_NF   = [Not_Serie do Documento   ]  
                       
        PARAM_DOC_ROM  = [Rom_Codigo do Documento  ]  
        PARAM_TIP_ROM  = [Rom_Tipo do Documento    ]  
        PARAM_SER_ROM  = [Rom_Serie do Documento   ]  
               
        PARAM_DOC_DUP  = [Dup_Codigo do Documento  ]  
        PARAM_TIP_DUP  = [Dup_Tipo do Documento    ]  
        PARAM_SER_DUP  = [Dup_Serie do Documento   ]  
        PARAM_TPC_CLIE = [Tipo_Consulta_Cliente    ]
        PARAM_MESES_SEMVENDA  =[Bloqueio_MESES_SEMVENDA]
        PARAM_BLOQUEIA_CANCEL =[Bloqueia Cancelamento  ]
        PARAM_BLOQUEIA_ALTERA =[Bloqueia_Alteracao_NF  ]
        
        PARAM_NBLOQUEIO_SPC   =[NDias_Bloqueio_SPC       ]  
        PARAM_UTILIZA_ENTRADA =[Utiliza_Entrada          ]      
        PARAM_CONDPAGTO       =[Utiliza CP e FP Cliente  ] 

        PARAM_BAIXA_PARCIAL   ="S"
        PARAM_BLOQPED_NEG     ="S"

        If PARAM_CONDPAGTO="S" And SYS_NIVEL_USUARIO<>"S" And SYS_NIVEL_USUARIO<>"E"
           Then UTILIZA_CP_FP = True
           Else UTILIZA_CP_FP = False
        EndIf    

   Else Mensagem("Parametros n„o Cadastrado para esta Empresa [Saida/Balc„o] !")
EndIf

ParamE=False
Moveto "\\Sistemas\\Estoque\\P_Entra"
Moveto [Codigo_Empresa]
Locate [FaturaC->Codigo da Empresa]
If RetVal
   Then ParamE=True 
        PARAM_PECAS_ITEM      = [Controla_Pecas_Item      ]
   Else Mensagem("Parametros n„o Cadastrado para esta Empresa [Entrada/NE] !")
EndIf

Moveto "FaturaC"
KeyPress "F7"

If ParamF And ParamE
   Then Return True
   Else Return False
EndIf   
EndProc ; (Carrega_Parametros)

;*******************************************************************************
;* Rotina para Carregar Tabelas                                                *
;*******************************************************************************
Proc Closed Carrega_Tabelas()
UseVars AutoLib, ErrorProc

View NOWINDOW "P_Balcao"
View NOWINDOW "P_Cartao"
View NOWINDOW "FaturaI"
View NOWINDOW "FaturaV"
View NOWINDOW "FaturaIC"
View NOWINDOW "FaturaIG"

View NOWINDOW "NotaC"
View NOWINDOW "NotaI"
View NOWINDOW "NotaIC"
View NOWINDOW "NotaIG"
View NOWINDOW "NotaV"
View NOWINDOW "NumeroNF"
View NOWINDOW "NumeroDP"

View NOWINDOW  "\\Sistemas\\Estoque\\P_Entra"
View NOWINDOW  "\\Sistemas\\Estoque\\SdEstq"
View NOWINDOW  "\\Sistemas\\Estoque\\EstqPrm"

View NOWINDOW  "\\Sistemas\\CheqRec\\ChequeC"
View NOWINDOW  "\\Sistemas\\CheqRec\\ChequeI"

View NOWINDOW  "\\Sistemas\\CtaRec\\Duplic"
View NOWINDOW  "\\Sistemas\\CtaRec\\P_Duplic"

View NOWINDOW  "\\Sistemas\\Cadastro\\Destaut"
View NOWINDOW  "\\Sistemas\\Cadastro\\FichaCli"
View NOWINDOW  "\\Sistemas\\Cadastro\\Feriados"
View NOWINDOW  "\\Sistemas\\Cadastro\\Destmsg"
View NOWINDOW  "\\Sistemas\\Cadastro\\End_Cob"
View NOWINDOW  "\\Sistemas\\Cadastro\\Destinat"

EndProc   ; (Carrega_Tabelas)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp = True
TECLA    =""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
          If Campo="TG_OPDEST"
             Then Seleciona_Opcoes("Op‡”es de Desinat rio","7,9")
          EndIf
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_DTINI"         : Campo="NO"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="YES" Or Campo="NO": Campo="TG_DTINI"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_DTINI"      : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"      : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
MSG_CAMPO=""
TECLA=""
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Vendas\\Bib_Bal"
SYS_Valor()

If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT=""   EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO="9999" EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""    EndIf
If Not IsAssigned(SYS_CLIENTE_CONFEC)  Then SYS_CLIENTE_CONFEC=""    EndIf      

If SYS_CODIGO_CLIENTE = "0314"
   Then PARAM_BLOQ_ALTERA_REP = "S"
   Else PARAM_BLOQ_ALTERA_REP = "N"
EndIf
PARAM_RATEIO_COMISSAO = ""
INICIO_IMPRESSAO      = True
PARAM_AGRUPA_ITEM     = False
GERA_DUPLIC_CAIXA     = False 
VERIFICA_CONSULTA     = "BALCAO"  

ConfGeral("Gerando as Notas de Saidas conforme rela‡Æo no Fatura,//"+
          "apenas ajustes nas notas, sem altera‡Æo no CTAREC...  //"+
          "Deseja Continuar?                                     ")
If OK="S"
   Then VSDGDTINI =BlankDate()
        VSDGDTFIM =BlankDate()

        While True
          ShowDialog "Acerto de Notas de Saida" Proc "SD_Dialog"
          Trigger "OPEN","ARRIVE"
          Key "F1","ENTER","ESC",
              -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
           @ 05,12   Height 07 Width 46
           
           Label  @ 00,00 "Per¡odo Referente" For "TG_DTINI"
           Label  @ 01,01 "de" For "TG_DTINI"
           Accept @ 01,05 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
           Label  @ 01,18 "at‚" For "TG_DTFIM"
           Accept @ 01,23 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
        
           Pushbutton @ 03,09 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
           Pushbutton @ 03,23 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
        
          EndDialog
          If Not RetVal Then QuitLoop EndIf
          
          Carrega_Tabelas()
          
          CoEdit NoWindow "FaturaC"
          
          ;************** Rotina para tratar o erro de tabela locada ********************
          If ErrorCode()=4
             Then Do_It!
                  ClearAll
                  Release Vars All
                  Release Procs All
                  return
          EndIf
          
          OPCAO_FORM_REL="11"
          OPCAO_FORM_MAN="3"
          OPCAO_FORM    =OPCAO_FORM_REL
              
          Moveto "FaturaC"
          PickForm OPCAO_FORM_MAN
          Moveto "OrcaC"   SetHighLight Current Record 119 Field 119
          Moveto "OrcaI"   SetHighLight Current Record 119 Field 119
          Moveto "\\Sistemas\\Estoque\\SdEstq"  SetHighLight Current Record 51  Field 51
          
          If Sys_Codigo_Cliente = "0058"
            Then Origem_Nota="FATURA"
            Else Origem_Nota="BALCAO"
          EndIf
              
          Opcaoc = "Alterar"
            
          COD_EMP="***"  
              
          MES_EST       =""
          ANO_EST       =""
          V_DESTIOBS=1
          VSD_I_DataEntrega =BlankDate()
          VSD_I_DataEntregar=BlankDate()
          
          VCITENS =BlankNum()
          VSQTDE  =BlankNum()
          VSVRMERC=BlankNum()
          
          Release Procs Nota  
            
          NR=NRecords("FaturaC")  
            
          Moveto "FaturaC"
          PickForm "F" 
          OPCAO_FORM="F"  
          Scan for ([Data de Emissao] >= VSDGDTINI And [Data de Emissao] <= VSDGDTFIM) And [Sistema Gerador]<>"C"
            Barra(NR, RecNo())
            Aguarde("Aguarde, Corrigindo Notas "+Completa(StrVal(Recno())+"/"+StrVal(NR),9," ")+BARRA_STRING)
            
            If COD_EMP <> [Codigo da Empresa] 
               Then COD_EMP = [Codigo da Empresa] 
                    Carrega_Parametros()
            EndIf
            
            NOTAFISC =[FaturaC->Numero Nota Gerada]
            CODFISC  =[FaturaC->Docto Nota Gerada ]
            SERIEFISC=[FaturaC->Serie Nota Gerada ]
            
            Checagem()
            Checagem_Cliente()
            NOTA_ACERTO(VERIFICA_CONSULTA)
            
            Moveto "FaturaC" 
          EndScan
          Do_It!
          ClearAll
          MENSAGEM("Opera‡Æo Finalizada !") 
        EndWhile
  Else ClearAll
       MENSAGEM("Opera‡Æo Abortada !")      
EndIf        
Release Vars All
Release Procs All         
