;*******************************************************************************
;* Cria Registro de Nota Fiscal (cabeca e item)                                *
;*******************************************************************************
Proc NOTA()

Aguarde("Gerando e atualizando dados "+Opcaoc+" "+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

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

;****** Gera Cabeca da Nota Fiscal *******************************
SITUACAO=""
Moveto "NotaC"
Moveto [Codigo da Empresa]
Locate [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
If RetVal
   Then SITUACAO=[Situacao]
        Del
EndIf
        
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         ]
[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                 ]
[Codigo do Representante  ] = [FaturaC->Codigo do Representante  ]
[Nome Fantasia Represent  ] = [FaturaC->Nome Fantasia Represent  ]
[Comissao do Representante] = [FaturaC->Comissao do Representante]
[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         ] = [FaturaC->Aliquota de 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               ]
[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 ISSQN              ] = [FaturaC->Valor ISSQN              ]
[Valor IR                 ] = [FaturaC->Valor IR                 ]
[Valor INSS               ] = [FaturaC->Valor INSS               ]
[Valor Nota Fiscal        ] = [FaturaC->Valor Nota Fiscal        ]
[Valor Despesas Acessorias] = [FaturaC->Valor Despesas Acessorias]
[Valor BCSubstituicao ICMS] = [FaturaC->Valor BCSubstituicao ICMS]
[Valor Substituicao ICMS  ] = [FaturaC->Valor Substituicao ICMS  ]
[Frete Incluso na Nota    ] = [FaturaC->Frete Incluso na Nota    ]
[Aliquota BCFrete Nota    ] = [FaturaC->Aliquota BCFrete Nota    ]
[Valor do Frete           ] = [FaturaC->Valor do Frete           ]
[Aliquota BCICMS Frete    ] = [FaturaC->Aliquota BCICMS Frete    ]
[Aliquota de ICMS Frete   ] = [FaturaC->Aliquota de ICMS Frete   ]
[Cfo Frete                ] = [FaturaC->Cfo Frete                ]
[Valor do Seguro          ] = [FaturaC->Valor do Seguro          ]
[Numero de Volumes        ] = [FaturaC->Numero de Volumes        ]
[Peso Bruto               ] = [FaturaC->Peso Bruto               ]
[Peso Liquido             ] = [FaturaC->Peso Liquido             ]
[Numero Nota Original     ] = [FaturaC->Numero Nota Original     ]
[Codigo da Tabela         ] = [FaturaC->Codigo da Tabela         ]
[Numero da Of             ] = [FaturaC->Numero da Of             ]
[Situacao                 ] = ""
[Exportado_Caixa          ] = ""
[Origem do Pedido         ] = [FaturaC->Origem do Pedido         ]
[Observacao na Nota Fiscal] = [FaturaC->Observacao na Nota Fiscal]
[Nome do Autorizado       ] = [FaturaC->Nome do Autorizado       ]
[CPF do Autorizado        ] = [FaturaC->CPF do Autorizado        ]
[Data da Autorizacao      ] = [FaturaC->Data da Autorizacao      ]
[Numero_Carregamento      ] = [FaturaC->Numero_Carregamento      ]
[Sistema Gerador          ] = "FT"
[Chave_Acesso_NFe         ] = ""

[Codigo_Usuario           ] = [FaturaC->Codigo_Usuario           ]
[Data_Inclusao            ] = [FaturaC->Data_Inclusao            ]
[Hora_Inclusao            ] = [FaturaC->Hora_Inclusao            ]
[Numero_Controle_Dia      ] = [FaturaC->Numero_Controle_Dia      ]

[Situacao                 ] = SITUACAO

UnLockRecord

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

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

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

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

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

;****** 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   ]
          [RefNfe_B13  ]=[FaturaR->RefNfe_B13  ]
          [Serie_B19   ]=[FaturaR->Serie_B19   ]
          [NNF_B20     ]=[FaturaR->NNF_B20     ] 
          [Cuf_B15     ]=[FaturaR->Cuf_B15     ]
          [AAMM_B16    ]=[FaturaR->AAMM_B16    ]
          [Cnpj_B17    ]=[FaturaR->Cnpj_B17    ]
          [Mod_B18     ]=[FaturaR->Mod_B18     ]  
          UnLockRecord

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

;****** Gera Item da Nota Fiscal **************************
Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]
  Moveto "NotaI"
  End
  Down

  [Codigo da Empresa       ] = [FaturaC->Codigo da Empresa]
  [Numero do Documento     ] = NOTAFISC
  [Serie do Documento      ] = SERIEFISC
  [Item do Documento       ] = [FaturaI->Item da OF        ]
  [Numero Pedido_Orcamento ] = [FaturaI->Numero Pedido_Orcamento ]
  [Item Pedido_Orcamento   ] = [FaturaI->Item Pedido_Orcamento   ]
  [Tipo do Item            ] = [FaturaI->Tipo do Item            ]
  [Codigo do Item          ] = [FaturaI->Codigo do Item          ]
  [Descricao do Item       ] = [FaturaI->Descricao do Item       ]
  [Codigo da Cor_Tecido    ] = [FaturaI->Codigo da Cor_Tecido    ]
  [Descricao da Cor_Tecido ] = [FaturaI->Descricao da Cor_Tecido ]
  [Tamanho                 ] = [FaturaI->Tamanho                 ]
  [Quantidade              ] = [FaturaI->Quantidade              ]
  [Unidade Fiscal          ] = [FaturaI->Unidade Fiscal          ]
  [Preco Unitario          ] = [FaturaI->Preco Unitario          ]
  [Taxa Desconto Unitario  ] = [FaturaI->Taxa Desconto Unitario  ]
  [Valor Desconto Unitario ] = [FaturaI->Valor Desconto Unitario ]
  [Preco Total             ] = Round([FaturaI->Preco Total             ],2)
  [Preco Unitario Tabela   ] = [FaturaI->Preco Unitario Tabela   ]
  [Custo Medio Unitario    ] = [FaturaI->Custo Medio Unitario    ]


  [Taxa Desconto Total     ] = TXDESCTO_TOTAL
  [Valor Desconto Total    ] = Round((([Preco Total]*TXDESCTO_TOTAL)/100),5)

  [Tributacao de ICMS      ] = [FaturaI->Tributacao de ICMS      ]
  [Aliquota Reduzida BCICMS] = [FaturaI->Aliquota Reduzida BCICMS]
  [Aliquota de ICMS        ] = [FaturaI->Aliquota de ICMS        ]
                          VBC= [Preco Total]-[Valor Desconto Total]
                          VBC= VBC-Round((VBC*[Aliquota Reduzida BCICMS])/100,2)
  If VBC>0
     Then [Valor do ICMS   ] = Round((VBC*[Aliquota de ICMS])/100,2)
     Else [Valor do ICMS   ] = [FaturaI->Valor do ICMS   ]
  EndIf


  [Tributacao de IPI       ] = [FaturaI->Tributacao de IPI       ]
  [Aliquota Reduzida BCIPI ] = [FaturaI->Aliquota Reduzida BCIPI ]
  [Aliquota de IPI         ] = [FaturaI->Aliquota de IPI         ]
  [Valor do IPI            ] = [FaturaI->Valor do IPI            ]
  [Tributacao de ISSQN     ] = [FaturaI->Tributacao de ISSQN     ]
  [Aliquota de ISSQN       ] = [FaturaI->Aliquota de ISSQN       ]
  [Valor do ISSQN          ] = Round(([Preco Total]*[Aliquota de ISSQN])/100,2)
  [Tributacao de IR        ] = [FaturaI->Tributacao de IR        ]
  [Aliquota de IR          ] = [FaturaI->Aliquota de IR          ]
  [Valor do IR             ] = Round(([Preco Total]*[Aliquota de IR])/100,2)
  [Tributacao de INSS      ] = [FaturaI->Tributacao de INSS      ]
  [Aliquota de INSS        ] = [FaturaI->Aliquota de INSS        ]
  [Valor do INSS           ] = Round((([Preco Total]-[Valor Desconto Total])*[Aliquota de INSS])/100,2)
  [Peso Liquido            ] = [FaturaI->Peso Liquido            ]
  [Peso Embalagem          ] = [FaturaI->Peso Embalagem          ]
  [Volumes                 ] = [FaturaI->Volumes                 ]
  [NBM                     ] = [FaturaI->NBM                     ]
  [Tipo Tributacao         ] = [FaturaI->Tipo Tributacao         ]
  [Edita Descricao do Item ] = [FaturaI->Edita Descricao do Item ]
  [Fator Conversao         ] = [FaturaI->Fator Conversao         ]
  [Comissao do Item         ] = [FaturaI->Comissao do Item         ]
  [Lookup_TabPreco_Item     ] = [FaturaI->Lookup_TabPreco_Item     ]
  [Lookup_TabPreco_CondPagto] = [FaturaI->Lookup_TabPreco_CondPagto]
  [Condicao de Pagamento    ] = [FaturaI->Condicao de Pagamento    ]
  [Composicao de Dias       ] = [FaturaI->Composicao de Dias       ]
  [Codigo da Tabela         ] = [FaturaI->Codigo da Tabela         ]
  [CFO                      ] = [FaturaI->CFO                      ]
  [Valor IPI por Unidade    ] = [FaturaI->Valor IPI por Unidade    ]
  [MVA                      ] = [FaturaI->MVA                      ]
  [CSOSN                    ] = [FaturaI->CSOSN                    ]
  [NCM                      ] = [FaturaI->NCM                      ]

  [IPI_CST                  ] = [FaturaI->IPI_CST                  ]
  [PIS_CST                  ] = [FaturaI->PIS_CST                  ]
  [PIS_Aliquota             ] = [FaturaI->PIS_Aliquota             ]
  [PIS_Valor                ] = [FaturaI->PIS_Valor                ]
  [COFINS_CST               ] = [FaturaI->COFINS_CST               ]
  [COFINS_Aliquota          ] = [FaturaI->COFINS_Aliquota          ]
  [COFINS_Valor             ] = [FaturaI->COFINS_Valor             ]
  UnLockRecord

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

SaveTables

EndProc    ;  (Nota)


;*******************************************************************************
;* Rotina Principal Emissao Nota Fiscal ou Romaneio                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Vendas\\Bib_Fat"
debug

View "NotaC"
View "NotaI"
View "NotaV"
View "NotaIC"
View "NotaR"

View "FaturaC"
View "FaturaI"
View "FaturaV"
View "FaturaIC"
View "FaturaR"

Moveto "FaturaC"
CoEditKey
Scan

 If [Data de Emissao]<DateVal("01.02.2010") Or
    [Data de Emissao]>DateVal("22.02.2010")
    Then Loop
 EndIf
 debug
 NOTAFISC =[Numero Nota Gerada]
 CODFISC  =[Docto Nota Gerada ]
 SERIEFISC=[Serie Nota Gerada ]

 If [Taxa de Desconto]>0
    Then TXDESCTO_TOTAL=[Taxa de Desconto]
    Else VRDESCTO=[Valor do Desconto]
         TXDESCTO_TOTAL=(VRDESCTO/[Valor Mercadoria])*100
 EndIf

 Nota()

 Moveto "FaturaC"
EndScan
Do_It!
ClearAll
