;** acctuni ********************************************************************
;*  acerto do custo unitario                                                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 01/01/1998 por Anivel Augusto Rodrigues
;Ultima Alteracao: 27/04/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 09/09/2014 por Kamila Gomes
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 13/07/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes Proc Calc_Custo_Unitario(), Cotacao() e Estoque()

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registro()

INICIO_DIALOG=True
CopyToArray RegItem
QTDCONV =[Quantidade Convertida]
QUANT   =[Quantidade ]
CTTOTAL =NDecimal(([Quantidade ]*[Custo Medio Unitario]),2)
VSD_I_Flag=""

VSD_I_TX_ICMS_SAIDA=0
VSD_I_RD_ICMS_SAIDA=0
If Not IsBlank([Codigo do Item])
   Then VSD_I_Codigo_Item=[Codigo do Item]
        Moveto [Codigo do Item]
        Ativa_Lookup()
        Moveto [Codigo do Item]
        Locate VSD_I_Codigo_Item
        If RetVal
           Then VSD_I_TX_ICMS_SAIDA  =[Aliquota de ICMS     ]
                VSD_I_RD_ICMS_SAIDA  =[Aliquota Reduzida BCICMS  ]
        EndIf
        KeyPress "ESC"
EndIf

Registro_Item("Ler")

EndProc ; (Inicia_Registro)

;*******************************************************************************
;* Rotina para Calculo do Custo Unitario                                       *
;*******************************************************************************
Proc Calc_Custo_Unitario()
Private VR_ICMSDB, VR_ICMSCR, VR_COFINSDB, VR_COFINSCR, VR_BASE,
        RSD_BCSUBST, RSD_VRSUBST, RSD_VRACRESC, TXPROPORC,VR_DIF_ICMS,AUX_TPITEM, 
        AUX_CFO, AUX_CODITEM, VR_ALIQICMS, VR_BCICMS, VR_PRECOTOTAL, VR_ICMS_ST,
        VR_IPI, VL_OPR, VR_DESCTOTAL, VR_FRETETOTAL, VR_SEGUROTOTAL, VR_OUTDESPTOTAL,
        TabAnt, a,b,t,i,x, REGItem, calcdif,
        vr_icms, vr_bcicms2, vr_bcicmsd, vr_icms1, vr_icms2 
        
        

TabAnt = Table()

VCU_SINAL_IPI       ="+"
VCU_SINAL_ICMSCR    =":"
VCU_SINAL_ICMSDB    =":"
VCU_SINAL_COFINSCR  =":"
VCU_SINAL_COFINSDB  =":"
VCU_SINAL_PIS       =":"
VCU_SINAL_AJUSTES   =":"
VCU_SINAL_DIF_ICMS  ="+"
VCU_SINAL_FRETE     ="+"
VCU_SINAL_SEGURO    ="+"
VCU_SINAL_OUTDESP   ="+"
VCU_SINAL_ACR_DESC  ="+"
VCU_SINAL_SERVICO   ="+"

TIT_COFINSCR        ="COFINS.."
TIT_COFINSDB        ="........"
TIT_ICMSCR          ="ICMS...."
TIT_ICMSDB          ="........"
TIT_PIS             ="PIS....."
TIT_DIF_ICMS        ="Dif.ICMS"
TIT_FRETE           ="Frete..."    
TIT_SEGURO          ="Seguro.."    
TIT_OUTDESP         ="Desp.Acs"    
TIT_ACR_DESC        ="+/-Rat.."    
TIT_SERVICO         ="Servi‡o."   

VCU_Preco_Unitario  =BlankNum()
VCU_Desconto        =BlankNum()
VCU_Acrescimos      =BlankNum()
VCU_IPI             =BlankNum()
VCU_VR_SUBST        =BlankNum()

VCU_COFINSCR        =BlankNum()
VCU_COFINSDB        =BlankNum()
VCU_ICMSDB          =BlankNum()
VCU_ICMSCR          =BlankNum()
VCU_PIS             =BlankNum()
VCU_AJUSTES         =BlankNum()
VCU_DIF_ICMS        =BlankNum()
VCU_FRETE           =BlankNum()
VCU_SEGURO          =BlankNum()
VCU_OUTDESP         =BlankNum()
VCU_ACRE_DESC       =BlankNum()
VCU_SERVICO         =BlankNum()

VCU_BC_PrVenda      =BlankNum()
VCU_VrIndice_PrVenda=BlankNum()

VR_ICMSDB           =BlankNum()
VR_ICMSCR           =BlankNum()
VR_COFINSDB         =BlankNum()
VR_COFINSCR         =BlankNum()
VR_BASE             =BlankNum()
VR_DIF_ICMS         =BlankNum()
VR_FRETE            =BlankNum()
VR_SEGURO           =BlankNum()
VR_OUTDESP          =BlankNum()
VR_ACRE_DESC        =BlankNum()
VR_SERVICO          =BlankNum()
VR_DESCTO           =BlankNum()

AUX_TPITEM         = [Tipo do Item        ]
AUX_CFO            = [CFO                 ]
AUX_CODITEM        = [Codigo do Item      ]
VR_ALIQICMS        = [Aliquota de ICMS    ]
VR_BCICMS          = [ICMS_BC             ]
vr_icms            = [Valor do ICMS       ]
VR_ICMS_ST         = [ICMS_ST_Valor       ]
VR_IPI             = [Valor do IPI        ]
VR_PRECOTOTAL      = [Preco Total         ]
VR_DESCTOTAL       = [Valor Desconto Total]
VR_FRETETOTAL      = [Valor Frete Total   ] 
VR_SEGUROTOTAL     = [Valor Seguro Total  ] 
VR_OUTDESPTOTAL    = [Valor OutDesp Total ]
VRACRESC           = 0

Item_CST_ICMS   = ""
Item_CST_PIS    = ""
Item_CST_COFINS = ""
TP_CST_PIS      = "N"
TP_CST_COFINS   = "N"

ALIQ_ICMS_EMPR  = BlankNum()
VR_DIF_ICMS     = BlankNum()
      
UnLockRecord      
If PARAM_FTCUSTO  = "NOTAEPV"
   Then Moveto Tabela
   Else Moveto "NotaEC"
EndIf

VRMERC          = [Valor Mercadoria ]
PORC_IT_TOTAL   = (VR_PRECOTOTAL/VRMERC)*100
TXDESCTO        = ([Valor Desconto]/VRMERC)*100
TPOPER          = [Tipo de Operacao ]
TP_RATEIO_ITENS = [Inf_Rateios Itens]

If TP_RATEIO_ITENS = "1" 
   Then VR_DESCTO    =([Valor Desconto           ]*PORC_IT_TOTAL)/100
        VR_FRETE     =([Valor do Frete           ]*PORC_IT_TOTAL)/100
        VR_SEGURO    =([Valor do Seguro          ]*PORC_IT_TOTAL)/100
        VR_OUTDESP   =([Valor Despesas Acessorias]*PORC_IT_TOTAL)/100
   Else VR_DESCTO    = VR_DESCTOTAL    
        VR_FRETE     = VR_FRETETOTAL   
        VR_SEGURO    = VR_SEGUROTOTAL  
        VR_OUTDESP   = VR_OUTDESPTOTAL 
EndIf
VR_ACRE_DESC = ([Valor Acrescimos_Desctos ]*PORC_IT_TOTAL)/100
VR_SERVICO   = ([Valor Servico            ]*PORC_IT_TOTAL)/100

Switch
  Case IsBlank([Valor Acrescimos_Desctos ]) : VCU_SINAL_ACR_DESC   =":"
  Case [Valor Acrescimos_Desctos ]>0        : VCU_SINAL_ACR_DESC   ="+"
  Case [Valor Acrescimos_Desctos ]<0        : VCU_SINAL_ACR_DESC   ="-"
EndSwitch

VL_OPR=(VR_PRECOTOTAL-VR_DESCTO)+VR_IPI+VR_ICMS_ST+VR_FRETE+VR_SEGURO+VR_OUTDESP

GetRecord "\\Sistemas\\Estoque\\Itens" AUX_CODITEM To REGItem
If RetVal
 Then Item_CST_PIS   =REGItem["PIS_CST"]
      Item_CST_COFINS=REGItem["COFINS_CST"]
      Item_CST_ICMS  =REGItem["Tipo Tributacao"]
      
      If Item_CST_COFINS<>""
         Then TP_CST_PIS   =Checa_CST("COFINS","S",Item_CST_COFINS)
      EndIf
      If Item_CST_PIS<>""
         Then TP_CST_COFINS=Checa_CST("PIS","S",Item_CST_PIS)
      EndIf    
EndIf

GetRecord "\\Sistemas\\Estoque\\Itens" AUX_CODITEM To REGItem
If RetVal
 Then Item_CST_ICMS=REGItem["Tipo Tributacao"]
EndIf

GetRecord "\\Sistemas\\Cadastro\\Empresas" [Codigo da Empresa] To EMPRESA 
If RetVal
  Then UFEMP  = EMPRESA["UF Empresa"]
       TPEMPR = EMPRESA["Tipo da Empresa"]
  Else UFEMP  = ""
       TPEMPR = ""
EndIf

If [UF]<>UFEMP and UFEMP<>""
  Then GetRecord "\\Sistemas\\Vendas\\Estados" UFEMP To UFEMPR
       If RetVal
         Then ALIQ_ICMS_EMPR = UFEMPR["Aliquota de ICMS"]
       EndIf
EndIf

;--- ICMS C lculo Diferencial de Aliquota -------------------------------------- 
calcdif         = false
If SearchFrom("255",AUX_CFO,1)>0 And  ; 255.. uso, consumo e imobilizado
   Search("60",Item_CST_ICMS)=0     ; Item sem ST
   Then calcdif=true
   Else If (AUX_TPITEM="T" And Search("60",Item_CST_ICMS)=0) and ; Produto de terceiro e nĆo ‚ ICMS ST
          PARAM_ACRES_DIF_ALIQ_CUST = "S" And (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB") ;vitoria textil 
          Then calcdif=true                                                                             ;a pedido da Karina
       endif    
endif    

If calcdif
   Then if VR_ALIQICMS>0  ;aliquota do item
           Then 
                ALIQ_ICMS_ORIGEM=VR_ALIQICMS
                bc_icms_difaliq =VR_BCICMS
           else
                GetRecord "\\Sistemas\\Vendas\\Estados" [UF] to reg_uf
                If RetVal
                   Then ALIQ_ICMS_ORIGEM=reg_uf["Aliquota de ICMS"]
                   else ALIQ_ICMS_ORIGEM=0
                EndIf
                If ALIQ_ICMS_ORIGEM<=0
                   then MSG=    "O Estado de ["+[UF]+"], sem % ICMS para//"
                        MSG=MSG+"calculo do diferencial de alˇquota.                   // //"
                        MSG=MSG+"Verificar no cadastro de Estados a sua alˇquota//"
                        MSG=MSG+"interestadual !                                "
                        Mensagem(MSG)
                EndIf
           
                bc_icms_difaliq=VL_OPR
        endif          
        If ALIQ_ICMS_ORIGEM>0 And ALIQ_ICMS_ORIGEM<ALIQ_ICMS_EMPR
           then 
                 switch
                   case [Data de Entrada]<DateVal("01.01.2016"):
                     vr_dif_icms=Round((bc_icms_difaliq*(ALIQ_ICMS_EMPR-ALIQ_ICMS_ORIGEM))/100,2)  
                   
                   otherwise:
                     vr_bcicms2 = bc_icms_difaliq-((bc_icms_difaliq * ALIQ_ICMS_ORIGEM) /100)
                     vr_bcicmsd = Round(vr_bcicms2 / (1-(ALIQ_ICMS_EMPR/100)),2)
                
                     vr_icms1   = Round((vr_bcicmsd * ALIQ_ICMS_EMPR) /100,2)
                     vr_icms2   = Round((bc_icms_difaliq * ALIQ_ICMS_ORIGEM) /100,2)
                     
                     vr_dif_icms=vr_icms1-vr_icms2

                 endswitch
        EndIf 
EndIf  
   
VRACRESC = VR_FRETE+VR_SEGURO+VR_OUTDESP+VR_ACRE_DESC+VR_SERVICO+VR_DIF_ICMS

UnLockRecord
Moveto TabAnt
[Preco Total] = VR_PRECOTOTAL
If PARAM_FTCUSTO  = "NOTAEPV"
   Then [Valor Desconto Total]=NDecimal((VR_PRECOTOTAL*TXDESCTO)/100,5)
EndIf

If AUX_TPITEM="C" Or
   AUX_TPITEM="D" Or
   AUX_TPITEM="G" Or
   AUX_TPITEM="H" Or
   AUX_TPITEM="I" Or
   TPOPER="A" Or
   TPOPER="D" Or
   TPOPER="T"
   Then VSD_I_Preco_Venda   =BlankNum()
        VSD_I_Preco_VendaI  =BlankNum()
   
        [Custo Medio Unitario]=[Preco Total]-VR_DESCTO
        If [Quantidade]>0
           Then Divisor_Custo=[Quantidade]
           Else Divisor_Custo=1
        EndIf
        [Custo Medio Unitario]=[Custo Medio Unitario]+[Valor Acrescimo Total]+[ICMS_ST_Valor]+[Valor do IPI]
        [Custo Medio Unitario]=NDecimal(([Custo Medio Unitario]/Divisor_Custo),5)
        VSD_I_Custo_Unitario=[Custo Medio Unitario]
        Return
EndIf

If (AUX_TPITEM="M" Or AUX_TPITEM="E") And TPOPER="C"
   Then VCU_SINAL_IPI=":"
EndIf

If PARAM_CALC_COFLUCR="S"
   Then TIT_COFINSDB        = "COFINS/DB"
        VCU_SINAL_COFINSDB  = "+"
        If PARAM_USA_COFINS_DBCR="S" And TP_CST_COFINS = "C"
           Then TIT_COFINSCR       = "COFINS/CR"
                VCU_SINAL_COFINSCR = "-"
        EndIf

        TIT_ICMSCR      ="ICMS/CR.."
        VCU_SINAL_ICMSCR="-"
        TIT_ICMSDB      ="ICMS/DB.."
        VCU_SINAL_ICMSDB="+"                
   Else If PARAM_CCE_SUBICMS="S" 
           Then TIT_ICMSCR      ="ICMS/CR.."
                VCU_SINAL_ICMSCR="-"
        EndIf
        If PARAM_CCE_SUBCOFINS="S" And TP_CST_COFINS = "C"
           Then TIT_COFINSCR      ="COFINS/CR"
                VCU_SINAL_COFINSCR="-"
        EndIf
EndIf

Switch
  Case IsBlank([Valor Acrescimos_Desctos]) : VCU_SINAL_AJUSTES   =":"
  Case [Valor Acrescimos_Desctos]>0        : VCU_SINAL_AJUSTES   ="+"
  Case [Valor Acrescimos_Desctos]<0        : VCU_SINAL_AJUSTES   ="-"
EndSwitch

If AUX_TPITEM="T" And TPOPER="C" And PARAM_CCE_SUBPIS="S" And TP_CST_PIS = "C"
   Then TIT_PIS       = "PIS/CR..."
        VCU_SINAL_PIS = "-"
EndIf

[Custo Medio Unitario]=[Preco Total]-VR_DESCTO
If [Quantidade]>0
   Then Divisor_Custo=[Quantidade]
   Else Divisor_Custo=1
EndIf

If PARAM_CALC_COFLUCR="S" 
   Then
        [Custo Medio Unitario]=[Custo Medio Unitario]+VRACRESC
        [Custo Medio Unitario]=[Custo Medio Unitario]+[ICMS_ST_Valor        ]
        [Custo Medio Unitario]=[Custo Medio Unitario]+[Valor do IPI         ]
        [Custo Medio Unitario]=NDecimal(([Custo Medio Unitario]/Divisor_Custo),5)
        
        If TP_CST_COFINS = "C"
           Then VR_BASE  =[Custo Medio Unitario]+(([Custo Medio Unitario]*PARAM_TAXA_LUCRATIV)/100)
                VR_COFINSDB=(VR_BASE*PARAM_TAXA_COFINS)/100
        EndIf

        If SYS_CODIGO_CLIENTE="0117" And SubStr(Directory(),1,1)="V"
           Then VR_COFINSDB=0
        EndIf

        [Custo Medio Unitario]=[Custo Medio Unitario]+VR_COFINSDB

        If PARAM_USA_COFINS_DBCR="S" And TP_CST_COFINS = "C"
           Then VR_BASE=NDecimal((([Preco Total]-VR_DESCTO)/Divisor_Custo),2)
                VR_COFINSCR=(VR_BASE*PARAM_TAXA_COFINS)/100
                [Custo Medio Unitario]=[Custo Medio Unitario]-VR_COFINSCR
        EndIf

        VR_BASE  =[Custo Medio Unitario]+(([Custo Medio Unitario]*PARAM_TAXA_LUCRATIV)/100)
        VR_BASE  =VR_BASE-((VR_BASE*VSD_I_RD_ICMS_SAIDA)/100)
        VR_ICMSDB=(VR_BASE*VSD_I_TX_ICMS_SAIDA)/100

        If SYS_CODIGO_CLIENTE="0117" And SubStr(Directory(),1,1)="V"
           Then VR_ICMSDB=0
        EndIf

        [Custo Medio Unitario]=[Custo Medio Unitario]+VR_ICMSDB
        
        VCU_ICMSCR     =([Valor do ICMS])/Divisor_Custo
        [Custo Medio Unitario]=[Custo Medio Unitario]-VCU_ICMSCR

        VCU_COFINSDB   =VR_COFINSDB
        VCU_COFINSCR   =VR_COFINSCR
        VCU_ICMSDB     =VR_ICMSDB   

   Else 
        [Custo Medio Unitario]=NDecimal(([Custo Medio Unitario]/Divisor_Custo),5)
        If PARAM_CCE_SUBICMS = "S"
           Then VCU_ICMSCR  =([Valor do ICMS])/Divisor_Custo
                [Custo Medio Unitario]=[Custo Medio Unitario]-VCU_ICMSCR
        EndIf
        If PARAM_CCE_SUBCOFINS = "S" And TP_CST_COFINS = "C"
           Then VR_BASE     =NDecimal((([Preco Total]-VR_DESCTO)/Divisor_Custo),2)
                VCU_COFINSCR=(VR_BASE*PARAM_TAXA_COFINS)/100           
                [Custo Medio Unitario]=[Custo Medio Unitario]-VCU_COFINSCR
        EndIf
        [Custo Medio Unitario]=[Custo Medio Unitario]+((VRACRESC+[ICMS_ST_Valor])/Divisor_Custo)
EndIf

VCU_VR_SUBST=NDecimal(([ICMS_ST_Valor]/Divisor_Custo),5)    

If PARAM_CCE_SUBPIS = "S" And TP_CST_PIS = "C"
   Then VR_BASE    =NDecimal((([Preco Total]-VR_DESCTO)/Divisor_Custo),2)
        VCU_PIS    =(VR_BASE*PARAM_TAXA_PIS)/100           
        [Custo Medio Unitario]=[Custo Medio Unitario]-VCU_PIS
EndIf

If VCU_SINAL_IPI="+"
   Then VCU_IPI                = [Valor do IPI ]/Divisor_Custo
        [Custo Medio Unitario] = [Custo Medio Unitario]+VCU_IPI
EndIf
[Custo Medio Unitario]=[Custo Medio Unitario]+[Valor Acrescimos_Desctos]
[Custo Medio Unitario]=NDecimal([Custo Medio Unitario],5)

If PARAM_FTCUSTO = "NOTAEC"
   Then If INC_COMPRA
           Then Return
        EndIf   
EndIf

If [Quantidade]>0
   Then VCU_Preco_Unitario=[Preco Unitario]
   Else VCU_Preco_Unitario=[Preco Total]+[Valor Desconto Unitario]+(VR_DESCTO/Divisor_Custo)
EndIf
VCU_Desconto   =[Valor Desconto Unitario]+(VR_DESCTO/Divisor_Custo)
VCU_Acrescimos =VRACRESC/Divisor_Custo

VCU_DIF_ICMS  = VR_DIF_ICMS/Divisor_Custo 
VCU_FRETE     = VR_FRETE/Divisor_Custo    
VCU_SEGURO    = VR_SEGURO/Divisor_Custo   
VCU_OUTDESP   = VR_OUTDESP/Divisor_Custo  
VCU_ACRE_DESC = VR_ACRE_DESC/Divisor_Custo
VCU_SERVICO   = VR_SERVICO/Divisor_Custo  

VCU_AJUSTES    =[Valor Acrescimos_Desctos]
VCU_BC_PrVenda =BlankNum()
VCU_VrIndice_PrVenda=BlankNum()

VSD_I_Custo_Unitario = [Custo Medio Unitario]                                                          
VSD_I_Ct_Unitario    = NDecimal(((VSD_I_Custo_Unitario*Divisor_Custo)/VSD_I_Quantidade_Convertida),5)

If Not IsBlank(VSD_I_Indice_PrVenda) And PARAM_ATTAB_PRECO="S"
   Then If PARAM_BCPV_SUBICMS="S"
           Then If PARAM_CCE_SUBICMS="S"
                   Then VCU_BC_PrVenda = VSD_I_Custo_Unitario
                   Else VCU_BC_PrVenda = VSD_I_Custo_Unitario-VCU_ICMSCR
                EndIf
           Else If PARAM_CCE_SUBICMS="S"
                   Then VCU_BC_PrVenda = VSD_I_Custo_Unitario+VCU_ICMSCR
                   Else VCU_BC_PrVenda = VSD_I_Custo_Unitario
                EndIf
        EndIf
        VCU_VrIndice_PrVenda=(VCU_BC_PrVenda*VSD_I_Indice_PrVenda)/100
        VSD_I_Preco_Venda = Round(VCU_BC_PrVenda+VCU_VrIndice_PrVenda,2)
        VSD_I_Preco_VendaI= Round(((VSD_I_Preco_Venda*Divisor_Custo)/VSD_I_Quantidade_Convertida),2)
   Else VSD_I_Preco_Venda = BlankNum()
        VSD_I_Preco_VendaI= BlankNum()
EndIf
UnLockRecord

EndProc ; Calc_Custo_Unitario()
;*******************************************************************************
;* Rotina para Gravacao/Leitura do Item                                        *
;*******************************************************************************
Proc Registro_Item(Funcao_Registro)
Private Funcao_Registro
Switch
  Case Funcao_Registro="Gravar":
       [Numero da OC              ]=VSD_I_OC
       If Not IsBlank(VSD_I_OC_Item)
          Then [Item da OC                ]=NumVal(VSD_I_OC_Item)
       EndIf
       [Codigo da Empresa         ]=[NotaEC->Codigo da Empresa]
       [Codigo do Item            ]=VSD_I_Codigo_Item
       [Descricao do Item         ]=VSD_I_Descricao_Item
       [Tipo do Item              ]=VSD_I_Tipo_Item
       [Codigo_Fornecedor         ]=VSD_I_Codigo_Fornecedor

       [Lookup_Tabela_Preco       ]=VSD_I_Tabela_Preco
       [Indice Preco de Venda     ]=VSD_I_Indice_PrVenda

       [Quantidade                ]=VSD_I_Quantidade
       [Unidade Fiscal            ]=VSD_I_UN_Item
       [Unidade Entrada           ]=VSD_I_UN_Item
       [Preco Unitario            ]=VSD_I_Preco_Unitario
       [Taxa Desconto Unitario    ]=VSD_I_Taxa_Desconto_Unitario
       [Valor Desconto Unitario   ]=VSD_I_Valor_Desconto_Unitario
       [Preco Total               ]=Round(VSD_I_Preco_Total,2)

       [Preco Unitario Tabela     ]=VSD_I_Preco_Tabela
       [Custo Medio Unitario      ]=VSD_I_Custo_Unitario

       [Tipo Tributacao           ]=VSD_I_CST_Item
       [Tributacao de ICMS        ]=VSD_I_TICMS
       [Aliquota Reduzida BCICMS  ]=VSD_I_RBC_ICMS
       [ICMS_BC                   ]=VSD_I_BC_ICMS
       [Aliquota de ICMS          ]=VSD_I_AICMS
       [Valor do ICMS             ]=VSD_I_Valor_ICMS

       [ICMS_ST_BC                ]=VSD_I_BC_ST   
       [ICMS_ST_Valor             ]=VSD_I_Valor_ST   

       [IPI_CST                   ]=VSD_I_CST_IPI  
       [Tributacao de IPI         ]=VSD_I_TIPI
       [IPI_BC                    ]=VSD_I_BC_IPI 
       [Aliquota de IPI           ]=VSD_I_AIPI
       [Valor do IPI              ]=VSD_I_Valor_IPI

       [Tributacao de ISSQN       ]=VSD_I_TISSQN
       [ISSQN_BC                  ]=VSD_I_BC_ISSQN 
       [Aliquota de ISSQN         ]=VSD_I_AISSQN
       [Valor do ISSQN            ]=VSD_I_Valor_ISSQN
       [Codigo_Servico            ]=VSD_I_CDSERV   
       [ISSQN_UF                  ]=VSD_I_UFSERV   
       [ISSQN_Municipio           ]=VSD_I_MUNSERV   

       [PIS_CST                   ]=VSD_I_CST_PIS                
       [PIS_BC                    ]=VSD_I_BC_PIS 
       [PIS_Aliquota              ]=VSD_I_APIS                  
       [PIS_Valor                 ]=VSD_I_Valor_PIS              

       [COFINS_CST                ]=VSD_I_CST_COFINS              
       [COFINS_BC                 ]=VSD_I_BC_COFINS 
       [COFINS_Aliquota           ]=VSD_I_ACOFINS                
       [COFINS_Valor              ]=VSD_I_Valor_COFINS           

       [Codigo CCusto             ]=VSD_I_CCusto
       [Descricao CCusto          ]=VSD_I_Descricao_CCusto

       [Fator de Conversao        ]=VSD_I_Fator_Conversao
       [Quantidade Convertida     ]=VSD_I_Quantidade_Convertida

       [Valor Acrescimos_Desctos  ]=VSD_I_Acrescimos_Desctos
       [Preco_Venda               ]=VSD_I_Preco_VendaOk

       [NCM                       ]=VSD_I_NCM                
       [CFO                       ]=VSD_I_CFOP                
       [MVA                       ]=VSD_I_MVA    
       [CSOSN                     ]=SubStr(VSD_I_CSOSN,2,3) 
       
       [Valor Frete Total         ]=VSD_I_RAT_FRETE               
       [Valor Seguro Total        ]=VSD_I_RAT_SEGURO              
       [Valor Desconto Total      ]=VSD_I_RAT_DESCONTO            
       [Valor OutDesp Total       ]=VSD_I_RAT_OUTDESP                     

       Calc_Custo_Unitario()
       UnLockRecord
       SaveTables
       
  Case Funcao_Registro="Ler":
       VSD_I_Seq                    =[Sequencia do Lancamento   ]
       VSD_I_OC                     =[Numero da OC              ]
       VSD_I_OC_Item                =[Item da OC                ]
       VSD_I_Tipo_Item              =[Tipo do Item              ]
       VSD_I_Codigo_Item            =[Codigo do Item            ]
       VSD_I_Descricao_Item         =[Descricao do Item         ]
       VSD_I_Tabela_Preco           =[Lookup_Tabela_Preco       ]
       VSD_I_Indice_PrVenda         =[Indice Preco de Venda     ]
       VSD_I_Quantidade             =[Quantidade                ]
       VSD_I_UN_Item                =[Unidade Entrada           ]
       VSD_I_Preco_Unitario         =[Preco Unitario            ]
       VSD_I_Taxa_Desconto_Unitario =[Taxa Desconto Unitario    ]
       VSD_I_Valor_Desconto_Unitario=[Valor Desconto Unitario   ]
       VSD_I_Preco_Total            =Round([Preco Total         ],2)
       VSD_I_Preco_Tabela           =[Preco Unitario Tabela     ]
       VSD_I_Custo_Unitario         =[Custo Medio Unitario      ]

       VSD_I_CST_Item               =[Tipo Tributacao           ]
       VSD_I_TICMS                  =[Tributacao de ICMS        ]
       VSD_I_RBC_ICMS               =[Aliquota Reduzida BCICMS  ]
       VSD_I_BC_ICMS                =[ICMS_BC                   ]
       VSD_I_AICMS                  =[Aliquota de ICMS          ]
       VSD_I_Valor_ICMS             =[Valor do ICMS             ]

       VSD_I_BC_ST                  =[ICMS_ST_BC                ]   
       VSD_I_AST                    =BlankNum()                       
       VSD_I_Valor_ST               =[ICMS_ST_Valor             ]   

       VSD_I_TIPI                   =[Tributacao de IPI         ]
       VSD_I_CST_IPI                =[IPI_CST                   ]  
       VSD_I_BC_IPI                 =[IPI_BC                    ]
       VSD_I_AIPI                   =[Aliquota de IPI           ]
       VSD_I_Valor_IPI              =[Valor do IPI              ]

       VSD_I_TISSQN                 =[Tributacao de ISSQN       ]
       VSD_I_BC_ISSQN               =[ISSQN_BC                  ]
       VSD_I_AISSQN                 =[Aliquota de ISSQN         ]
       VSD_I_Valor_ISSQN            =[Valor do ISSQN            ]
       VSD_I_CDSERV                 =[Codigo_Servico            ]   
       VSD_I_UFSERV                 =[ISSQN_UF                  ]   
       VSD_I_MUNSERV                =[ISSQN_Municipio           ]   

       VSD_I_CST_PIS                =[PIS_CST                   ]
       VSD_I_BC_PIS                 =[PIS_BC                    ]
       VSD_I_APIS                   =[PIS_Aliquota              ]
       VSD_I_Valor_PIS              =[PIS_Valor                 ]

       VSD_I_CST_COFINS             =[COFINS_CST                ]
       VSD_I_BC_COFINS              =[COFINS_BC                 ]
       VSD_I_ACOFINS                =[COFINS_Aliquota           ]
       VSD_I_Valor_COFINS           =[COFINS_Valor              ]

       VSD_I_CCusto                 =[Codigo CCusto             ]
       VSD_I_Descricao_CCusto       =[Descricao CCusto          ]
       VSD_I_Fator_Conversao        =[Fator de Conversao        ]
       VSD_I_Acrescimos_Desctos     =[Valor Acrescimos_Desctos  ]
       VSD_I_Preco_Venda            =[Preco_Venda               ]
       VSD_I_Preco_VendaOk          =[Preco_Venda               ]
       VSD_I_Unidade_Interna        =[Unidade Interna           ]
       VSD_I_Quantidade_Convertida  =[Quantidade Convertida     ]
       VSD_I_Codigo_Fornecedor      =[Codigo_Fornecedor         ]

       VSD_I_Flag                   =""
       VSD_I_Ct_Unitario            =BlankNum()
       VSD_I_Preco_VendaI           =BlankNum()

       VSD_I_NCM                    =[NCM                       ]
       VSD_I_CFOP                   =[CFO                       ]
       VSD_I_MVA                    =[MVA                       ]    
       VSD_I_CSOSN                  =SubStr([Tipo Tributacao],1,1)+[CSOSN]
       
       VSD_I_RAT_FRETE              = [Valor Frete Total        ]
       VSD_I_RAT_SEGURO             = [Valor Seguro Total       ]
       VSD_I_RAT_DESCONTO           = [Valor Desconto Total     ]
       VSD_I_RAT_OUTDESP            = [Valor OutDesp Total      ]
  
       Calc_Custo_Unitario()
EndSwitch
EndProc  ; (Registro_Item)
;*******************************************************************************
;* 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
;*******************************************************************************
;* Atualiza Cotacao de Preco                                                   *
;*******************************************************************************
Proc COTACAO()
Private Atualiza_Cotacao

If ([NotaEC->Tipo de Operacao]<>"C" And [NotaEC->Tipo de Operacao]<>"A") Or
   ([NotaEC->Data de Entrada ]<VSDGDTINI Or [NotaEC->Data de Entrada  ]>VSDGDTFIM )
   Then Return
EndIf

Switch
  Case SYS_CODIGO_CLIENTE="0052":
    If [NotaEC->Codigo da Empresa]="1000"
       Then Return
    EndIf
EndSwitch

Moveto "NotaEI"
Moveto [Numero do Lancamento]
Locate [NotaEC->Numero do Lancamento]
While [Numero do Lancamento]=[NotaEC->Numero do Lancamento]
  If Not IsBlank([Codigo do Item]) And [Tipo do Item]<>"C"
     Then
          Atualiza_Cotacao=False

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

          If Atualiza_Cotacao
             Then [Razao Social            ]=[NotaEC->Razao Social            ]
                  [Data de Compra          ]=[NotaEC->Data de Entrada         ]
                  [Numero do Documento     ]=[NotaEC->Numero do Documento     ] 
                  [Tipo do Documento       ]=[NotaEC->Tipo do Documento       ]
                  [Quantidade              ]=[NotaEI->Quantidade              ] 
                  [Unidade Entrada         ]=[NotaEI->Unidade Entrada         ]
                  If [NotaEI->Valor Desconto Total]>0
                     Then [Valor Unitario  ]=([NotaEI->Preco Total]/[NotaEI->Quantidade])-([NotaEI->Valor Desconto Total]/[NotaEI->Quantidade])
                     Else [Valor Unitario  ]=[NotaEI->Preco Total]/[NotaEI->Quantidade]
                  EndIf
                  [Custo Medio Unitario    ]=[NotaEI->Custo Medio Unitario    ]
                  [Unidade Interna         ]=[NotaEI->Unidade Interna         ]
                  [Numero do Lancamento    ]=[NotaEI->Numero do Lancamento    ]
                  [MVA                     ]=[NotaEI->MVA                     ]
                  [ICMS UF_ORIGEM          ]=[NotaEI->ICMS UF_ORIGEM          ]
                  [Tributacao de IPI       ]=[NotaEI->Tributacao de IPI       ]
                  [Aliquota Reduzida BCIPI ]=[NotaEI->Aliquota Reduzida BCIPI ]
                  [Aliquota de IPI         ]=[NotaEI->Aliquota de IPI         ]
                  [Tributacao de ICMS      ]=[NotaEI->Tributacao de ICMS      ]
                  [Aliquota Reduzida BCICMS]=[NotaEI->Aliquota Reduzida BCICMS]
                  [Aliquota de ICMS        ]=[NotaEI->Aliquota de ICMS        ]
                  [Fator de Conversao      ]=[NotaEI->Fator de Conversao      ]
                  [Tipo Tributacao         ]=[NotaEI->Tipo Tributacao         ]
                  [IPI_CST                 ]=[NotaEI->IPI_CST                 ]
                  [CFO                     ]=[NotaEI->CFO                     ]
                  UnLockRecord

                  Moveto "NotaEI"

                  If Not IsBlank([Codigo_Fornecedor])
                     Then Moveto "FornProd"
                          Moveto [Codigo]
                          Locate [NotaEC->Codigo],[NotaEI->Codigo_Fornecedor]
                          If Not RetVal
                             Then End Down
                                  [Codigo           ]=[NotaEC->Codigo           ]
                                  [Codigo_Fornecedor]=[NotaEI->Codigo_Fornecedor]
                          Endif
                          [Codigo do Item            ]=[NotaEI->Codigo do Item            ]
                          [Descricao do Item         ]=[NotaEI->Descricao do Item         ]
                          [Tributacao de IPI         ]=[NotaEI->Tributacao de IPI         ]
                          [Aliquota Reduzida BCIPI   ]=[NotaEI->Aliquota Reduzida BCIPI   ]
                          [Aliquota de IPI           ]=[NotaEI->Aliquota de IPI           ]
                          [Tributacao de ICMS        ]=[NotaEI->Tributacao de ICMS        ]
                          [Aliquota Reduzida BCICMS  ]=[NotaEI->Aliquota Reduzida BCICMS  ]
                          [Aliquota de ICMS          ]=[NotaEI->Aliquota de ICMS          ]
                          [CSOSN                     ]=[NotaEi->CSOSN                     ]
                          [Fator de Conversao        ]=[NotaEI->Fator de Conversao        ]
                          [Unidade Entrada           ]=[NotaEI->Unidade Entrada           ]
                          [Numero do Lancamento      ]=[NotaEI->Numero do Lancamento      ]
                          [MVA                       ]=[NotaEI->MVA                       ]
                          [ICMS UF_ORIGEM            ]=[NotaEI->ICMS UF_ORIGEM            ]
                          [Tipo Tributacao           ]=[NotaEI->Tipo Tributacao           ]
                          [IPI_CST                   ]=[NotaEI->IPI_CST                   ]
                          [CFO                       ]=[NotaEI->CFO                       ]
                          [PIS_CST                   ]=[NotaEI->PIS_CST                   ]
                          [PIS_Aliquota              ]=[NotaEI->PIS_Aliquota              ]
                          [COFINS_CST                ]=[NotaEI->COFINS_CST                ]
                          [COFINS_Aliquota           ]=[NotaEI->COFINS_Aliquota           ]
                          UnLockRecord
                  EndIf
          EndIf
  EndIf   
  Moveto "NotaEI"
  Estoque()
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

Moveto "NotaEC"
EndProc  ; (Cotacao)

;*******************************************************************************
;* Rotina Atualizacao do Estoque (Inclusao, Alteracao e Exclusao)             **
;*******************************************************************************
Proc Estoque()

;Aguarde("Atualizando Ficha de Estoque")

If [NotaEC->Tipo de Operacao]="A" Or
   ([NotaEC->Data de Entrada ]<VSDGDTINI Or
   [NotaEC->Data de Entrada  ]>VSDGDTFIM)Or
   IsBlank([NotaEI->Codigo do Item]) Or
   [NotaEI->Tipo do Item]="C" Or
   [NotaEI->Tipo do Item]="D" Or
   [NotaEI->Tipo do Item]="G" Or
   [NotaEI->Tipo do Item]="H" Or
   [NotaEI->Tipo do Item]="I"
   Then Return
EndIf

While True
 Moveto "\\Sistemas\\Estoque\\SdEstq"

 mesref=NumVal(MES)
 For r from mesref To 7
   Locate [NotaEC->Codigo da Empresa], [NotaEI->Codigo do Item], ANO, AlinhM(Strval(r),2)
   If RetVal
      Then If IsLockRecord()
              Then Loop
           EndIf
           If [NotaEC->Data de Entrada]>=[Data do Preco de Custo] And [NotaEC->Tipo de Operacao]="C"
              Then [Data do Preco de Custo]=[NotaEC->Data de Entrada]
                   [Preco de Custo        ]=NDecimal(([NotaEI->Custo Medio Unitario]*[NotaeI->Quantidade])/[NotaeI->Quantidade Convertida],5)
           EndIf
           UnLockRecord
   EndIf
 EndFor

 QuitLoop
EndWhile

Moveto "NotaEI"
EndProc  ; (Estoque)


;*******************************************************************************
;* Rotina para Carregar Parametros                                             *
;*******************************************************************************
Proc Carrega_Parametros()
Private Result

If IsEmpty("P_Entra")
   Then Mensagem("N„o esta Configurado os Parametros para Digita‡„o !")
        Result=False
   Else
        UnLockRecord
        KeyPress "F7"
        While True
          If Not IsLockRecord()
             Then QuitLoop
          EndIf
        EndWhile
        
        Moveto "P_Entra"
        Moveto [Codigo_Empresa]
        Locate [NotaEC->Codigo da Empresa]
        If Not RetVal
           Then Mensagem("Parametros n„o Cadastrado para esta Empresa !")
                Result=False
           Else PARAM_CONTA_CAIXA  = [Codigo_Conta_Caixa       ]
                Moveto [Codigo_Conta_Caixa]
                Ativa_Lookup()
                Moveto [Codigo da Conta]
                Locate PARAM_CONTA_CAIXA
                If RetVal
                   Then PARAM_DESC_CONTA_CAIXA=[Descricao da Conta]
                   Else PARAM_DESC_CONTA_CAIXA=""
                EndIf
                Keypress "Esc"
                UnLockRecord
                
                PARAM_TABELA_PRECO        = [Tabela_Preco             ]
                PARAM_ATTAB_PRECO         = [Atualiza_Tabela_Preco    ]
                PARAM_CCE_SUBICMS         = [SubTrai_ICMS_CustoEntrada]
                PARAM_BCPV_SUBICMS        = [SubTrai_ICMS_BC_PrVenda  ]
                PARAM_RELATORIO           = [Script_Impressao         ]
                PARAM_ATUA_CXBC           = [Atualiza_Caixa_Banco     ]
                PARAM_ATUA_CAPG           = [Atualiza_Contas_Pagar    ]
                PARAM_CALC_COFLUCR        = [Calcular_COFINS_Lucrativ ]
                PARAM_TAXA_COFINS         = [Taxa_COFINS              ]
                PARAM_TAXA_LUCRATIV       = [Taxa_Lucratividade       ]
                PARAM_USA_COFINS_DBCR     = [Utiliza_COFINS_DBCR      ]
                PARAM_PECAS_ITEM          = [Controla_Pecas_Item      ]
                
                PARAM_CCE_SUBCOFINS       = [SubTrai_COFINS_CustoEntra]
                PARAM_CCE_SUBPIS          = [SubTrai_PIS_CustoEntrada ]
                PARAM_TAXA_PIS            = [Taxa_PIS                 ]
                PARAM_ACRES_DIF_ALIQ_CUST = [Acresce_DifAliq_Custo    ]
                
                ;;MSG=[Notaec->Codigo do Documento]+" - "+SYS_CODIGO_CLIENTE+" - "+SubStr(Directory(),1,1)
                ;;Mensagem(MSG)
                
                If ([Notaec->Codigo do Documento]="NE") And (SYS_CODIGO_CLIENTE="0117") And
                   (SubStr(Directory(),1,1)="X")
                   Then PARAM_CCE_SUBICMS    = "N"
                        PARAM_BCPV_SUBICMS   = "N"
                        PARAM_CALC_COFLUCR   = "N"
                        PARAM_USA_COFINS_DBCR= "N"
                EndIf

                Result=True
        EndIf
EndIf

Moveto "NotaEC"
KeyPress "F7"

Return Result
EndProc ; (Carrega_Parametros)
;*******************************************************************************
;* Rotina para Carregar Tabelas                                                *
;*******************************************************************************
Proc Monta_Tabelas()
MSGCAMPO     = ""

View NOWINDOW "NotaEI"
View NOWINDOW "NotaECV"
View NOWINDOW "NotaEcp"
View NOWINDOW "NotaER"
View NOWINDOW "NotaEIA"              

View NOWINDOW "Cotacao"
View NOWINDOW "FornProd"
View NOWINDOW "P_Entra" 
View NOWINDOW "\\Sistemas\\CtaCor\\MovCont"
View NOWINDOW "\\Sistemas\\CtaCor\\SaldCont"
View NOWINDOW "\\Sistemas\\CtaPag\\Titulos"

View NOWINDOW "\\Sistemas\\Estoque\\Itens" ImageRights ReadOnlY
View NOWINDOW "\\Sistemas\\Estoque\\SdEstq"
View NOWINDOW "\\Sistemas\\Estoque\\EstqPrm"
View NOWINDOW "\\Sistemas\\Vendas\\TbPrIte"
;;View NOWINDOW "\\Sistemas\\Vendas\\TbPrCpg"

CoEdit NOWINDOW "NotaEC"

;************** Rotina para tratar o erro de tabela locada ********************
If ErrorCode()=4
   Then Return False
EndIf

PickForm "1"
Moveto "\\Sistemas\\Compras\\OCC" SetHighLight Current Record 119 Field 119
Moveto "\\Sistemas\\Compras\\OCI" SetHighLight Current Record 119 Field 119
Moveto "SdEstq"                   SetHighLight Current Record 51  Field 51
Moveto "NotaECV"                  SetHighLight Current Record 119 Field 119

Moveto "NotaEC"
PickForm "F"
Return True
EndProc

;*******************************************************************************
;* Rotina Principal Notas de Entrada                                           *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
If Not IsAssigNed(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT=""    EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA=""       EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE="0117" EndIf

VCITENS   =BlankNum()
VSQTDE    =BlankNum()
VSVRMERC  =BlankNum()
VSDGDTINI =BlankDate()
VSDGDTFIM =BlankDate()

PARAM_FTCUSTO     = "NOTAEC"

Array AICMS[30]
Array AIPI[30]

Array VIICMS[30]
Array VIIPI[30]

Array BCICMS[30]
Array BCIPI[30]

Array RICMS[30]
Array RIPI[30]

While True
  ShowDialog "Acerto de Custo unit rio" 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 09 Width 56

    Label  @ 01,04 "Perˇodo Referente" For "TG_DTINI"
    Label  @ 02,04 "de" For "TG_DTINI"
    Accept @ 02,08 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 02,21 "at‚" For "TG_DTFIM"
    Accept @ 02,26 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Pushbutton @ 05,14 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 05,28 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  If Not Monta_Tabelas()
     Then Do_It!
          ClearAll
          Release Vars All
          Release Procs All
          return
  EndIf
  
  INC_COMPRA=False
  NR = NRecords("NotaEC")
  Scan
    If [Data de Entrada ]>=VSDGDTINI And
       [Data de Entrada ]<=VSDGDTFIM
       Then Carrega_parametros()
       
            Barra(NR, RecNo())
            Aguarde("Aguarde, Corrigindo Custos Lan‡amento "+[Numero do Lancamento]+" "+BARRA_STRING )
            
            Moveto "NotaEI"
            Moveto [Numero do Lancamento]
            Locate [NotaEC->Numero do Lancamento]
            While [Numero do Lancamento] = [NotaEC->Numero do Lancamento]
               Inicia_Registro()
               Skip
               If EOT() Then QuitLoop EndIf
            EndWhile
            ;Scan 
            ; If [Numero do Lancamento] = [NotaEC->Numero do Lancamento]
            ;   Then Inicia_Registro()
            ; EndIf
            ;EndScan
    EndIf  
    Moveto "NotaEC"
  EndScan
  Do_It!
  ClearAll
  
  View "SdEstq"
  View "FornProd"
  View "Cotacao"
  View "Notaei"
  CoEdit "NotaEC"
  
  NR = NRecords("NotaEC")
  Scan
    Barra(NR, RecNo())
    Aguarde("Aguarde, Corrigindo Fichas"+BARRA_STRING)
    If Not IsBlank([Data de Entrada])
       Then MES=ALINHM(StrVal(Month([NotaEC->Data de Entrada])),2)
            ANO=ALINHM(StrVal(Year([NotaEC->Data de Entrada])),4)
       Else MES="00"
            ANO="0000"
    EndIf
  
    COTACAO()
  
    Moveto "NotaEC"
  EndScan
  MENSAGEM("Opera‡Ćo Finalizada !")
  Do_It!
  ClearAll
EndWhile
Release Vars All
Release Procs All

