;** PED_UTIL *******************************************************************
;*  Rotina para Fun‡äes de Pedidos                                             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 17/11/2014 por Bruno Carvalho
;Ultima Alteracao: 26/03/2014 por Bruno Carvalho               
;Motivo Alteracao: Removido SYS_VALOR() devido ao "Play PED_UTIL" durante processos
;Ultima Alteracao: 06/04/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ quando h  cor/tamanho da grade inativo ou com produ‡Æo esgotada                                                       
;Ultima Alteracao: 31/07/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado verifica‡Æo do item por GETRECORD antes de adicionar no PedidoI
;Ultima Alteracao: 14/09/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ otimiza‡Æo quando h  itens faturados -> InclusÆo e ExclusÆo de Itens
;Ultima Alteracao: 14/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()                
;Ultima Alteracao: 15/03/2017 por Bruno Carvalho
;Motivo Alteracao: Alterado i -> jk ao utilizar o FOR na proc Gera_PedidoI()
;Ultima Alteracao: 27/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo usar condi‡Æo pagamento por item
;Ultima Alteracao: 19/10/2017 por Bruno Carvalho
;Motivo Alteracao: Removido de Gera_PedidoI() -> Aliquota Reduzida BCIPI, Valor IPI por Unidade, Condicao de Pagamento, Composicao de Dias
;Ultima Alteracao: 20/10/2017 por Bruno Carvalho
;Motivo Alteracao: Removido de Gera_PedidoI() -> Codigo da Marca 
;Ultima Alteracao: 03/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes tbprnew
;Ultima Alteracao: 11/09/2018 por Bruno Carvalho
;Motivo Alteracao: Comentados campos que foram removidos da tabela PEDIDOI/PEDIDOG
;Ultima Alteracao: 10/10/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes Gera_PedidoI() quando item igual por‚m pre‡o unit rio diferente
;Ultima Alteracao: 14/12/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mensagem item nÆo cadastrado              
;Ultima Alteracao: 04/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes pedido de compra              
;Ultima Alteracao: 01/07/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado Array_Monta_Grade() p/ Array_Monta_Grade_GetRecord() *Bibliot -> P/ melhorar desempenho ao montar a grade do item
;Ultima Alteracao: 06/05/2020 por Bruno Carvalho
;Motivo Alteracao: Alterado Array_Monta_Grade_GetRecord() p/ Array_Monta_Grade() *Bib_Proc

;*******************************************************************************
;* Rotina Gera Tabela PedidoI                                                  *
;*******************************************************************************
Proc Gera_PedidoI()
Private i,tm, item, ItemNovo, MSG
Aguarde("Convertendo pedido modo padr„o")

Switch
  Case ROTINA_PEDIDO = "PEDIDOG" :
       ITEMALTERADO=False
               
       Moveto "PedidoI"
       While RecordStatus("New")=False
         Del
       EndWhile

       Moveto "PedidoG"
       NR = NIMAGERECORDS()    
                                
  Case ROTINA_PEDIDO = ""        :
      Moveto "PedidoI"
      If RecordStatus("New")=False 
         Then Moveto "PedidoC"
              Return
      EndIf    
      
      Moveto "Pedidog"
      NR = NIMAGERECORDS()
      If NR<1 
         Then Moveto "PedidoC"
              Return
      EndIf    
EndSwitch  

grdant="***"
Seq=0

Scan
  If ROTINA_PEDIDO = "PEDIDOG"  
     Then Barra(NR, RecNo())
          Aguarde("Aguarde, Convertendo pedido modo padr„o "+BARRA_STRING)
  EndIf
  CopyToArray RegPed
    
  VERIFICA_GRADE_GETRECORD=True  
  Array_Monta_Grade("")

  Qtd=0 QtdF=0
  For jk From 1 To 12
    TM=RTrim(SubStr(Array_TM[jk],4,2))
    If TM="" 
       Then Loop 
    EndIf

    Switch
      Case jk=1 : Qtd=RegPed["Qtd1"]  QtdF=RegPed["QtdF1"]  
      Case jk=2 : Qtd=RegPed["Qtd2"]  QtdF=RegPed["QtdF2"]  
      Case jk=3 : Qtd=RegPed["Qtd3"]  QtdF=RegPed["QtdF3"]  
      Case jk=4 : Qtd=RegPed["Qtd4"]  QtdF=RegPed["QtdF4"]  
      Case jk=5 : Qtd=RegPed["Qtd5"]  QtdF=RegPed["QtdF5"]  
      Case jk=6 : Qtd=RegPed["Qtd6"]  QtdF=RegPed["QtdF6"]  
      Case jk=7 : Qtd=RegPed["Qtd7"]  QtdF=RegPed["QtdF7"]  
      Case jk=8 : Qtd=RegPed["Qtd8"]  QtdF=RegPed["QtdF8"]  
      Case jk=9 : Qtd=RegPed["Qtd9"]  QtdF=RegPed["QtdF9"]  
      Case jk=10: Qtd=RegPed["Qtd10"] QtdF=RegPed["QtdF10"] 
      Case jk=11: Qtd=RegPed["Qtd11"] QtdF=RegPed["QtdF11"] 
      Case jk=12: Qtd=RegPed["Qtd12"] QtdF=RegPed["QtdF12"] 
    EndSwitch
    
    If Qtd<=0 
       Then Qtd = 0
    EndIf

    If Len(TM)=1
       Then Item=SubStr(RegPed["Codigo do Item"],1,9)+TM
       Else Item=SubStr(RegPed["Codigo do Item"],1,8)+TM
    EndIf
    
    GetRecord "\\Sistemas\\Estoque\\Itens" Item To REG_ITEM
    If Not RetVal
       Then 
            MSG=    Completa("Referˆncia: "+RegPed["Referencia"],72," ")+"//"
            MSG=MSG+Completa("       Cor: "+RegPed["Codigo da Cor_Tecido"]+" "+RegPed["Descricao da Cor_Tecido"],72," ")+"//"
            MSG=MSG+Completa("   Tamanho: "+substr(Array_TM[jk],2,2),72," ")+"// //"
            MSG=MSG+Completa("    C¢digo: "+Item+" n„o existe no cadastro de itens !",72," ")+"// //"
            MSG=MSG+"Verificar o item ["+strval(RegPed["Item do Pedido"])+"] deste pedido e corrigir o problema !"
            Mensagem(MSG)
            Loop
    EndIf
    
    ItemNovo=True 
    Moveto "PedidoI"
    Moveto [Codigo do Item]
    Locate Item
    If RetVal
       Then While [Codigo do Item]=Item 
              If [Preco Unitario]=RegPed["Preco Unitario"]
                 Then ItemNovo=False
                      QuitLoop
              EndIf        
              Skip                      
              If EOT() Then QuitLoop EndIf
              Locate Next Item
              If Not RetVal Then QuitLoop EndIf
            EndWhile
    EndIf

    If Not ItemNovo
       Then [Quantidade               ]=[Quantidade               ]+Qtd
            [Quantidade Faturada      ]=[Quantidade Faturada      ]+QtdF
            [Peso Liquido             ]=[Peso Liquido             ]+RegPed["Peso Liquido"]
            [Peso Embalagem           ]=[Peso Embalagem           ]+RegPed["Peso Embalagem"]
            [Volumes                  ]=[Volumes                  ]+RegPed["Volumes"]
       Else End Down
            Seq=Seq+1
            [Numero do Pedido         ]=RegPed["Numero do Pedido"]
            [Item do Pedido           ]=Seq
            [Codigo do Item           ]=Item
            [Codigo da Cor_Tecido     ]=RegPed["Codigo da Cor_Tecido"]
            [Tamanho                  ]=RegPed["Tamanho"]
            [Quantidade               ]=Qtd
            [Quantidade Faturada      ]=QtdF
            [Preco Unitario           ]=RegPed["Preco Unitario"]
            
            [Tipo Desconto Item       ]=RegPed["Tipo Desconto Item"]
            [Taxa Desconto Unitario   ]=RegPed["Taxa Desconto Unitario"]
            [Valor Desconto Unitario  ]=RegPed["Valor Desconto Unitario"]
            [Valor Desconto Item      ]=RegPed["Valor Desconto Item"]
            
            [Preco Total              ]=RegPed["Preco Total"]
            [Preco Unitario Tabela    ]=RegPed["Preco Unitario Tabela"]
            [Taxa Desconto Total      ]=RegPed["Taxa Desconto Total"]
            [Valor Desconto Total     ]=RegPed["Valor Desconto Total"]
            [Peso Liquido             ]=RegPed["Peso Liquido"]
            [Peso Embalagem           ]=RegPed["Peso Embalagem"]
            [Volumes                  ]=RegPed["Volumes"]
            [Codigo da Tabela         ]=RegPed["Codigo da Tabela"]                                         
            [Tipo Tributacao          ]=RegPed["Tipo Tributacao"]      
            [CFO                      ]=RegPed["CFO"]
          
            [Tributacao de ICMS       ]=RegPed["Tributacao de ICMS"]
            [Aliquota Reduzida BCICMS ]=RegPed["Aliquota Reduzida BCICMS"]
            [Aliquota de ICMS         ]=RegPed["Aliquota de ICMS"]
            [Valor do ICMS            ]=RegPed["Valor do ICMS"]
     
            [CSOSN                    ]=RegPed["CSOSN"]    
            [MVA                      ]=RegPed["MVA"]
            [NCM                      ]=RegPed["NCM"]
                                        
            [ICMS_ST_Aliquota         ]=RegPed["ICMS_ST_Aliquota"] 
            [ICMS_ST_BC               ]=RegPed["ICMS_ST_BC"]            
            [ICMS_ST_Valor            ]=RegPed["ICMS_ST_Valor"] 
            [ICMS_BC                  ]=RegPed["ICMS_BC"] 
            ;[ICMS_CredSN_Aliquota     ]=RegPed["ICMS_CredSN_Aliquota"] 
            ;[ICMS_CredSN_Valor        ]=RegPed["ICMS_CredSN_Valor"] 
             
            [Tributacao de IPI        ]=RegPed["Tributacao de IPI"]
            [Aliquota de IPI          ]=RegPed["Aliquota de IPI"]
            [Valor do IPI             ]=RegPed["Valor do IPI"]
            [IPI_CST                  ]=RegPed["IPI_CST"] 
            [IPI_BC                   ]=RegPed["IPI_BC"]            
                                  
            [Tributacao de ISSQN      ]=RegPed["Tributacao de ISSQN"] 
            [Aliquota de ISSQN        ]=RegPed["Aliquota de ISSQN"] 
            ;[Codigo_Servico           ]=RegPed["Codigo_Servico"]            
            ;[ISSQN_BC                 ]=RegPed["ISSQN_BC"] 
            ;[ISSQN_UF                 ]=RegPed["ISSQN_UF"] 
                                     
            [PIS_CST                  ]=RegPed["PIS_CST"] 
            [PIS_Aliquota             ]=RegPed["PIS_Aliquota"] 
            ;[PIS_BC                   ]=RegPed["PIS_BC"]            
            ;[PIS_Valor                ]=RegPed["PIS_Valor"] 
                                     
            [COFINS_CST               ]=RegPed["COFINS_CST"] 
            [COFINS_Aliquota          ]=RegPed["COFINS_Aliquota"] 
            ;[COFINS_BC                ]=RegPed["COFINS_BC"]            
            ;[COFINS_Valor             ]=RegPed["COFINS_Valor"]
            
            [Numero_Pedido_Compra      ]=RegPed["Numero_Pedido_Compra"      ]
            [Item_Pedido_Compra        ]=RegPed["Item_Pedido_Compra"        ]
             
            UnLockRecord
    EndIf

    If [Taxa Desconto Unitario]>0
       Then [Valor Desconto Unitario]=NDecimal(([Preco Unitario]*[Taxa Desconto Unitario])/100,2)
    EndIf
    If [Quantidade]>0
       Then [Preco Total]=[Quantidade]*([Preco Unitario]-[Valor Desconto Unitario])
       Else If [Preco Unitario]>0
               Then [Preco Total]=[Preco Unitario]-[Valor Desconto Unitario]
            EndIf
    EndIf
    If [Aliquota Reduzida BCICMS]>0 And
       [Aliquota de ICMS        ]>0
       Then [Valor do ICMS]=Round((([Preco Total]-(([Preco Total]*[Aliquota Reduzida BCICMS])/100))*[Aliquota de ICMS])/100,2)
       Else [Valor do ICMS]=Round(([Preco Total]*[Aliquota de ICMS])/100,2)
    EndIf
    If [Tributacao de IPI]<>"D"
       Then If Not IsBlank([Tributacao de IPI])
               Then [Aliquota de IPI]=BlankNum()
                    [Valor do IPI   ]=BlankNum()
            EndIf
    EndIf
    If [Aliquota de IPI        ]>0
       Then [Valor do IPI]=Round(([Preco Total]*[Aliquota de IPI])/100,2)
    EndIf
    UnLockRecord
  EndFor
  
  Moveto "PedidoG"
EndScan
Moveto "PedidoC"

Moveto "PedidoI"
Home
While True
  If [Quantidade]=0
     Then Del
     Else Skip
          If Eot() Then QuitLoop EndIf
  EndIf
EndWhile
Moveto "PedidoC"

If ROTINA_PEDIDO = "" 
   Then Release Vars i,tm, item, ItemNovo, nr, grdant, seq
EndIf

EndProc ;Gera_PedidoI() 

;*******************************************************************************
;* Rotina para Acertar Pedidos Faturados                                       *
;*******************************************************************************
Proc PedFaturado()

;---- Destina‡Æo "Atualiza Pedidos" -------------------------------------
{Ask} {Destin}
Moveto [Codigo da Destinacao] TypeIn "_CodN"
Moveto [Atualiza Pedidos    ] TypeIn "S"

;---- Notas de Saida -----------------------------------------------------
{Ask} {NotaC}
Moveto [Codigo da Empresa   ] TypeIn "_CodE"
Moveto [Numero do Documento ] TypeIn "_NumE"
Moveto [Serie do Documento  ] TypeIn "_SerE"
Moveto [Numero do Pedido    ] TypeIn "_Ped"
Moveto [Codigo da Destinacao] TypeIn "_CodN"
Moveto [Situacao            ] TypeIn "Not C"
{Ask} {NotaI}
Moveto [Codigo da Empresa   ] TypeIn "_CodE"
Moveto [Numero do Documento ] TypeIn "_NumE"
Moveto [Serie do Documento  ] TypeIn "_SerE"
Moveto [Item do Documento   ] TypeIn "_ItP"
Moveto [Codigo do Item      ] TypeIn "_CodI"
Moveto [Quantidade          ] TypeIn "_Qtd"                                                                                  
                                                                                                            
;ABERTO, se todos faturados, alterar para FATURADO, e conferir todos com exce‡äes nos CANCELADOS E SUSPENSOS

;---- Itens dos Pedidos a serem reajustados conforme FATURA --------------
{Ask} {PedidoC}
Moveto [Numero do Pedido    ] TypeIn "_Ped ,~VSDGPEDIDO.."
Moveto [Codigo da Empresa   ] TypeIn "_CodE, ~VSDGEMPRESA.."
Moveto [Situacao do Pedido  ] TypeIn "FATURADO"
If VSDGPEDIDO=""
   Then Moveto [Data de Emissao] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
EndIf   
{Ask} {PedidoI} 
Moveto [Numero do Pedido    ] TypeIn "_Ped" 
Moveto [Item do Pedido      ] TypeIn "_ItP"
Moveto [Codigo do Item      ] TypeIn "_CodI"
Moveto [Quantidade Faturada ] TypeIn "Changeto _Qtd"
Do_It!
ClearAll

EndProc ;PedFaturado()

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

Switch
  Case ROTINA_PEDIDO="PEDIDOG" : 
       If IsEmpty("P_Pedido")
          Then Mensagem("N„o esta Configurado os Parametros para Digita‡„o !")
               Return False
       EndIf
        
       GetRecord "P_Pedido" [PedidoC->Codigo da Empresa] To REG_PPEDIDO
       If Not RetVal
          Then Mensagem("Parametros P_Pedido n„o Cadastrado para a Empresa ["+[PedidoC->Codigo da Empresa]+"] !")
               Return False    
       EndIf
  Case ROTINA_PEDIDO = "" : 
       GetRecord "P_Pedido" [PedidoC->Codigo da Empresa] To REG_PPEDIDO 
       If Not RetVal
          Then Mensagem("Parametros P_Pedido n„o Cadastrado para a Empresa ["+[PedidoC->Codigo da Empresa]+"] !")
               Return False
       EndIf              
EndSwitch

PARAM_ALTERA_FP                ="S"
PARAM_DESTINACAO               =REG_PPEDIDO["Codigo_Destinacao"    ]
PARAM_RELATORIO                =REG_PPEDIDO["Script_ImpressaoG"    ]
PARAM_RELATORIO_S              =REG_PPEDIDO["Script_ImpressaoG_S"  ]
PARAM_DATAS_VENCTOS            =REG_PPEDIDO["Datas_Vencimentos"    ]
PARAM_COR_TECIDO               =REG_PPEDIDO["Cor_Tecido"           ]
PARAM_TAMANHO                  =REG_PPEDIDO["Tamanho"              ]
PARAM_DESCUNIT                 =REG_PPEDIDO["Desconto Unitario"    ]
PARAM_VOLUMES                  =REG_PPEDIDO["Volumes"              ]
PARAM_SUBSTICMS                =REG_PPEDIDO["Substituicao ICMS"    ]
PARAM_IMPOSTOS                 =REG_PPEDIDO["Impostos"             ]
PARAM_TABELA_PRECO             =REG_PPEDIDO["Tabela_Preco"         ]
PARAM_TRANSPORTADORA           =REG_PPEDIDO["Codigo_Transportadora"]
PARAM_COMIS_ITEM               =REG_PPEDIDO["Comissao_Item"        ]
PARAM_COMIS_MARCA              =REG_PPEDIDO["Utiliza_Comissao_Marca"   ]

PARAM_TABPR_ITEM               =REG_PPEDIDO["Utiliza_Tabela_Preco_Item"]
PARAM_COMIS_VENCTO             =REG_PPEDIDO["Calcula_Comissao_Vencto"  ]
PARAM_VISITA                   =REG_PPEDIDO["Utiliza_Visita"           ]
PARAM_UTILIZA_TABPR_CLIENTE    =REG_PPEDIDO["Utiliza_TabPreco_Cliente" ]
PARAM_UTILIZA_TABPR_REPRES     =REG_PPEDIDO["Utiliza_TabPreco_Repres"  ]
PARAM_PEGAPRECO_CPAGTO         =REG_PPEDIDO["Pega_Preco_Tabela_CPagto" ]
PARAM_ALTERA_PRECO             =REG_PPEDIDO["Utiliza_Alteracao_Preco"  ]
PARAM_CONDPAGTO                =REG_PPEDIDO["Utiliza CP e FP Cliente"  ]
PARAM_PEDIDOIMP                =REG_PPEDIDO["Altera Pedido PosImpresso"]

If SYS_CODIGO_CLIENTE="0102" Or SYS_CODIGO_CLIENTE="0114"
   Then PARAM_CALC_COMIS_ITEM="S"
   Else PARAM_CALC_COMIS_ITEM="N"
EndIf
  
Return True

EndProc ;Carrega_Parametros()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_PedDialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"        : Campo="NO"
            Case Campo="TG_PEDIDO"         : Campo="TG_EMPRESA"
            Case Campo="TG_DTINI"          : 
                 If Not IsBlank(VSDGPEDIDO)
                    Then Campo="TG_PEDIDO"
                    Else Campo="TG_EMPRESA"
                 EndIf  
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"
            Case Campo="TG_OPCOES"         : 
                 If Not IsBlank(VSDGPEDIDO)
                    Then Campo = "TG_PEDIDO"
                    Else Campo = "TG_DTFIM"
                 EndIf  
            Case Campo="YES" Or Campo="NO" : Campo="TG_EMPRESA"
          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_EMPRESA"  : Campo="TG_PEDIDO"
                    Case Campo="TG_PEDIDO"   : 
                         If Not IsBlank(VSDGPEDIDO) 
                            Then VSDGDTINI    = BlankDate()
                                 VSDGDTFIM    = BlankDate()
                                 If ROTINA_PEDIDO = "ATUALIZA_F3"
                                    Then Campo = "YES"     
                                    Else Campo = "TG_OPCOES"
                                 EnDIf   
                            Else Campo = "TG_DTINI"
                         EndIf    
                    Case Campo="TG_DTINI"    : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"    : 
                         If IsBlank(VSDGPEDIDO) Or ROTINA_PEDIDO = "ATUALIZA_F3"
                            Then Campo="YES"
                            Else Campo="TG_OPCOES"
                         EndIf
                    Case Campo="TG_OPCOES"   : Campo="YES"          
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_OPCOES"   :
       MensagemCheckBoxes()
  Case Campo="":
      MSG_CAMPO=""
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_PedDialog()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
If Not IsAssigned(ROTINA_PEDIDO)      Then ROTINA_PEDIDO = ""      EndIf
If Not IsAssigned(PARAM_PEDUTIL)      Then PARAM_PEDUTIL = ""      EndIf
If Not IsAssigned(PARAM_PEDUTIL_TIPO) Then PARAM_PEDUTIL_TIPO = "" EndIf         

Switch
   Case ROTINA_PEDIDO="PEDIDOG" :
        
        Switch
          Case PARAM_PEDUTIL= "ARRAY_MONTA_GRADE" : VERIFICA_GRADE_GETRECORD=True
                                                    If Array_Monta_Grade(PARAM_PEDUTIL_TIPO) 
                                                       Then PARAM_PEDUTIL = True 
                                                       Else PARAM_PEDUTIL = False 
                                                    EndIf
          Case PARAM_PEDUTIL= "CARREGA_PARAMETRO" : If Carrega_Parametros()
                                                       Then PARAM_PEDUTIL = True 
                                                       Else PARAM_PEDUTIL = False 
                                                    EndIf
          Case PARAM_PEDUTIL= "GERA_PEDIDOI"      : Gera_PedidoI() 
        EndSwitch
   OtherWise                    : 
        VSDGEMPRESA  = ""
        VSDGDTINI    = BlankDate()
        VSDGDTFIM    = BlankDate()
        
        Array VSDGOPCAO[1]
        VSDGOPCAO[1]= False        
        
        If ROTINA_PEDIDO = "ATUALIZA_F3"
           Then MSG = "Reajuste dos itens que ja foram faturados"
                TM_A = 11
                TM_B = 7 
                TM_O = 80
                VSDGOPCAO[1]= True
           Else MSG = "Gera‡Æo de itens do pedido [PedidoI] que foram PERDIDOS"
                TM_A = 13
                TM_B = 9  
                TM_O = 7      
        EndIf   
        
        While True
          ShowDialog MSG Proc "SD_PedDialog"
          Trigger "OPEN","ARRIVE"
          Key "F1","ENTER","ESC","TAB",
            -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
            @ 05,05   Height TM_A Width 65
        
            Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
            Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
            Accept @ 01,09 Width 23 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP
          
            Label  @ 02,00 "Pedido"  For "TG_PEDIDO"
            Accept @ 03,01 Width 09 "A6"  Picture "[&,#][#*#]" Tag "TG_PEDIDO" To VSDGPEDIDO
            Accept @ 03,09 Width 23 "A20"  Picture "!*!" Tag "TG_NOMPEDIDO" To VSDGNOMPEDIDO
          
            Label  @ 04,00 "Per¡odo de EmissÆo Referente" For "TG_DTINI"
            Label  @ 05,00 "de" For "TG_DTINI"
            Accept @ 05,04 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
            Label  @ 05,17 "at‚" For "TG_DTFIM"
            Accept @ 05,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

            CheckBoxes @ TM_O,00 Height 3 Width 33 Tag "TG_OPCOES"
            "Restaura Pedidos Faturados " To VSDGOPCAO[1]
        
            Pushbutton @ TM_B,20 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
            Pushbutton @ TM_B,34 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
        
          EndDialog
          If Not RetVal Then QuitLoop EndIf
        
          If VSDGDTFIM=BlankDate() And VSDGPEDIDO=""
             Then Mensagem("Data Final Invalida !")  
                  Loop
          EndIf
          
          If (VSDGDTINI<>BlankDate() Or VSDGDTFIM<>BlankDate()) And VSDGPEDIDO<>""
             Then Mensagem("Selecione o pedido OU defina a data para reajustes !")  
                  Loop
          EndIf
          
          If VSDGOPCAO[1] And ConfGeral("Reajustar itens dos pedidos faturados?")
             Then FAZ_ROTINA = False
                  PedFaturado()
                  If ROTINA_PEDIDO <> "ATUALIZA_F3" 
                     Then Mensagem("Fim do processo !")
                  EndIf   
                  QuitLoop     
             Else FAZ_ROTINA = True
          EndIf   
          
          If SYS_CLIENTE_CONFEC<>""         And 
             FAZ_ROTINA                     And
             ROTINA_PEDIDO <> "ATUALIZA_F3" And  
             ConfGeral("Confirma gerar itens do pedido pelo PedidoG ?")
             Then Array Array_TM[12]
                  
                  Array CODIGO[900]
                  Array QUANTI[900]
                  Array PRECOU[900]
                  
                  EmprAnt="****"
                  NR = nrecords("PedidoC")
                  
                  CoEdit "PedidoC"
                  PickForm "4"
                  Scan
                   Barra(NR, RecNo())
                   Aguarde("Aguarde, gerando itens no modo padr„o "+BARRA_STRING)
        
                   If VSDGPEDIDO<>""
                      Then If [Numero do Pedido]<>VSDGPEDIDO
                              Then Loop
                           EndIf
                      Else If VSDGEMPRESA<>"" And [Codigo da Empresa]<>VSDGEMPRESA
                              Then Loop
                           EndIf
                           If [Data de Emissao]<VSDGDTINI Or [Data de Emissao]>VSDGDTFIM   
                              Then Loop
                           EndIf       
                   EndIf   
        
                   If [Codigo da Empresa]<>EmprAnt
                      Then EmprAnt=[Codigo da Empresa]
                           If Carrega_Parametros()
                              Then ParamOK=true
                              Else ParamOK=false
                           EndIf
                   EndIf   
        
                   If ParamOK 
                      Then Gera_PedidoI() 
                   EndIf
                  
                  EndScan        
                  Do_It!
                  ClearAll
                  
                  Mensagem("Fim do processo !")
          EndIf   
        EndWhile
        Release Vars FAZ_ROTINA
        If ROTINA_PEDIDO <> "ATUALIZA_F3" 
           Then PARAM_PEDUTIL=False
                ClearAll
                ;Release Vars All
                ;Release Procs All
        EndIf        
EndSwitch 
