;** DES_PED ********************************************************************
;** Pedidos p/ Desmembramento                                                  *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 27/03/2018 por Bruno Carvalho
;Ultima Alteracao:   /  /     por                             
;Motivo Alteracao:   
 
;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()

While True
  Moveto [Sequencia]
  End
  CODIGO=[Sequencia]
  Down Down
  CODIGO=CODIGO+1
  [Sequencia]=CODIGO
  Moveto [Sequencia]
  SetaCorRegistro("Editar")
  While true
      
      If Field()="Sequencia"
         Then Prompt " Esc=Sair                  Alt+F=Fun‡”es"
         Else Prompt " Esc=Retornar  F1=Tabelas  Alt+F=Fun‡”es"
      EndIf

      TECLA=""
      AguardaTeclasPadrao()
            
      If SubStr(RetVal,1,2)="-1"      
         Then SYS_TECLA_ACIONADA=RetVal 
              Seta_Tecla_Acionada()     
              RetVal="ESC"            
      EndIf
      
      If RetVal=-33
         Then Echo Normal
              Echo Off
              ShowPopup " Fun‡”es " CENTERED              
              "F3  ~L~impar        " : " Limpar a Rela‡„o de Pedidos   " : "F3",
              "F5  ~D~esmembrar    " : " Desmembramento de Pedidos     " : "F5",
              "F6  ~S~ele‡„o       " : " Sele‡„o de Pedidos            " : "F6",
              Separator,
              "~C~ancelar       " : " Cancelar a Opera‡„o          " : "CANCELAR"
              EndMenu                                                                                 
              To MenuVar
              Echo Off
              If MenuVar="CANCELAR" or MenuVar="Esc"
                 Then Loop
              EndIf 
              RetVal = MenuVar                            
      EndIf
      
      Switch
      Case RetVal="F1"And Field()="Numero do Pedido":
           CONSULTAF1()
      Case RetVal="F3"And Field()="Sequencia":
           Del
           CONFIRMA()
           If OK="S"
              Then EXCLUSAO()
                   QuitLoop
           EndIf
       Case RetVal="F5" :
            Del
            If Desmembramento_Pedido()
               Then Mensagem("Desmembramento processado com sucesso!")
                    If [Numero do Pedido]="" Then Del EndIf     
            EndIf
            QuitLoop
       Case RetVal="F6":
            Del
            Selecao()
            QuitLoop
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME" And Field()="Sequencia":
           While True
             PAGINA("DP_REL","MR")
             If EXCLUIR="S"
                Then CONFIRMA()
                     If OK="S"
                        Then Del
                     EndIf
                Else If EDITAR<>"S"
                        Then QuitLoop
                        Else Edita_Entrega()
                     EndIf   
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ESC":
           If Field()="Numero do Pedido"
              Then If CHAVE=1
                      Then Del
                   EndIf
                   QuitLoop
           EndIf
           CHAVE=9
           Del
           Return
      Case Retval="ENTER" :  
           If Field()="Sequencia"
              Then If IsBlank([]) Then Loop EndIf
                   CODIGO=[]
                   Del
                   Locate CODIGO
                   If Retval
                      Then CHAVE=0
                           Moveto [Numero do Pedido]
                           Loop
                      Else CHAVE=1
                           End Down Down
                           [Sequencia]=CODIGO
                   EndIf
                   If IsLockRecord()
                      Then End 
                           CODIGO=[Sequencia]
                           Down Down
                           Moveto [Sequencia]
                      Else Moveto [Numero do Pedido]
                           Loop     
                  EndIf
                                     
             Else Switch
                    Case Field()="Numero do Pedido" :
                         If IsBlank([])
                             Then Loop
                         EndIf
                         CODIGO=[Sequencia]
                         NPED=[Numero do Pedido]
                         Del
                         Locate NPED
                         If Not Retval
                            Then ;----- Ocorrˆncias de Erros -------------------
                                 GetRecord "\\Sistemas\\Vendas\\PedidoG" NPED To REG_PEDIDO
                                 If Not RetVal
                                    Then Mensagem("Pedido "+NPED+" n„o ‚ modo grade!")
                                    Else GetRecord "\\Sistemas\\Vendas\\PedidoC" NPED To REG_PEDIDO
                                         If RetVal 
                                            Then Switch
                                                   Case Search ("PEDIDO DESMEMBRADO PELO AGRUPAMENTO",REG_PEDIDO["Observacao do Pedido"])>0 :  
                                                        Mensagem("Pedido "+NPED+" j  foi desmembrado anteriormente !")  
                                                   Case Search ("PEDIDO SORTIDO DESMEMBRADO",REG_PEDIDO["Observacao do Pedido"])>0 :  
                                                        Mensagem("Pedido "+NPED+" j  foi desmembrado anteriormente !")  
                                                   Case Search ("PEDIDO DESMEMBRADO DO PEDIDO",REG_PEDIDO["Observacao do Pedido"])>0 :
                                                        Mensagem("Pedido "+NPED+" j  fez parte do desmembramento em processos anteriores !")
                                                   Case REG_PEDIDO["Situacao do Pedido"]<>"SUSPENSO" And REG_PEDIDO["Situacao do Pedido"]<>"ABERTO" :
                                                        Mensagem("Pedido "+NPED+" com a situa‡„o "+REG_PEDIDO["Situacao do Pedido"])
                                                   OtherWise : End Down Down
                                                               [Sequencia         ] = CODIGO
                                                               [Numero do Pedido  ] = NPED
                                                               [Entrega           ] = ""
                                                               [Numero de Parcelas] = BlankNum()
                                                               UnLockRecord                  
                                                 EndSwitch
                                         EndIf    
                                 EndIf 
                                 
                                 
                                                              
                            Else Mensagem("Pedido j  existe.////Sequˆncia "+StrVal([Sequencia])+" !")          
                         EndIf    
                         QuitLoop
                  EndSwitch
        EndIf
        Right
      EndSwitch
  EndWhile
EndWhile
EndProc

;*******************************************************************************
;* Rotina De Exclusao                                                          *
;*******************************************************************************
Proc EXCLUSAO()
Home
While RecordStatus("New")=False
  Del
EndWhile
EndProc

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc Seleciona2()
ClearAll

If Upper(VSDGCIDADE)="TODAS"
   Then VSDGCIDADE2=".."
   Else VSDGCIDADE2=VSDGCIDADE
EndIf

{Ask} {\\Sistemas\\Vendas\\PedidoC} Check
Moveto [Codigo da Empresa   ] TypeIn "~VSDGEMPRESA.."
Switch
  Case VSDGOPDT="E": Moveto [Data de Emissao    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
  Case VSDGOPDT="I": Moveto [Data_Inclusao      ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
  Case VSDGOPDT="N": Moveto [Data de Entrega    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
EndSwitch
Moveto [Codigo              ] TypeIn "~VSDGDESTINAT.."
Moveto [Codigo da Destinacao] TypeIn "~VSDGDESTIN.."
Moveto [Cidade              ] TypeIn VSDGCIDADE2
Moveto [UF                  ] TypeIn "~VSDGESTADO.."
Moveto [Situacao do Pedido  ] 
Switch
  Case VSDGSITUACAOPEDIDO="JUNTAR ABERTO+SUSPENSO"     : TypeIn "ABERTO or SUSPENSO"
  Case VSDGSITUACAOPEDIDO="IGNORAR CANCELADO+SUSPENSO" : TypeIn "not CANCELADO, not SUSPENSO"
  Case VSDGSITUACAOPEDIDO="IGNORAR CANCELADO"          : TypeIn "not CANCELADO"
  Case VSDGSITUACAOPEDIDO<>"TODAS"                     : TypeIn "~VSDGSITUACAOPEDIDO.."
EndSwitch
Moveto [Observacao do Pedido] Check TypeIn "Not PEDIDO DESMEMBRADO"
If Not IsBlank(VSDGMARCA)
   Then Moveto [Numero do Pedido] Example "NPed"
        {Ask} {\\Sistemas\\Vendas\\PedidoI}
        Moveto [Numero do Pedido] Example "NPed"
        Moveto [Codigo do Item  ] Example "Ite" 
        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item  ] Example "Ite"
        Moveto [Codigo da Marca ] TypeIn "~VSDGMARCA"        
EndIf        
Do_It!
ClearAll                                        

If VSDGOPDT="E"
   Then Return
EndIf

For i From 1 To 2
  {Ask} {Answer} TypeIn "Fast Delete"
  If i=1
     Then Moveto [Data_Inclusao          ] TypeIn "~VSDGDTINI"
          Moveto [Hora_Inclusao          ] TypeIn "<~VSDGHRINI"
     Else Moveto [Data_Inclusao          ] TypeIn "~VSDGDTFIM"
          Moveto [Hora_Inclusao          ] TypeIn ">~VSDGHRFIM"
  EndIf
  Do_It!
  ClearAll
EndFor

EndProc    ; (Seleciona)

;*******************************************************************************
;* Rotina p/ Regerar a Relacao e tirar os diferentes de ABERTO e SUSPENSO      *
;*******************************************************************************
Proc Regerar_Relacao()
ClearAll

{Ask} {\\Sistemas\\Vendas\\PedidoC}
Moveto [Numero do Pedido    ] Example "NPed"
Moveto [Situacao do Pedido  ] Example "SPed"
{Ask} {\\Sistemas\\Vendas\\DP_REL} 
Moveto [Numero do Pedido    ] Example "NPed"
Moveto [Situacao do Pedido  ] TypeIn "Changeto _SPed"
Do_It!
ClearAll

{Ask} {\\Sistemas\\Vendas\\DP_REL} TypeIn "Delete" 
Moveto [Situacao do Pedido  ] TypeIn "Not ABERTO, Not SUSPENSO"
Do_It!
ClearAll

If Not IsEmpty("DP_REL")
   Then Coedit "DP_REL"
        Moveto [Sequencia]
        SEQ = 0
        Scan
          SEQ         = SEQ+1
          [Sequencia] = SEQ
        EndScan
        Do_It!
        ClearAll
EndIf      

EndProc

;*******************************************************************************
;* Alinha Data no ShowDialogo                                                  *
;*******************************************************************************
Proc Alinha_Data()
Private CONTADOR,AUX_ARRAY_ENTREGA,ii,ui,DATA_VERIFICAR,DATA

CONTADOR = 0
Array AUX_ARRAY_ENTREGA[ArraySize(ARRAY_ENTREGA)]

For ii From 1 To ArraySize(ARRAY_ENTREGA)
  If ii = ArraySize(ARRAY_ENTREGA) And ARRAY_ENTREGA[ii]="" 
     Then QuitLoop 
     Else If ARRAY_ENTREGA[ii]=""
             Then Loop
          EndIf
  EndIf
  DATA_VERIFICAR = BlankDate()
  DATA           = DateVal(ARRAY_ENTREGA[ii])   
  For ui From 1 To ArraySize(ARRAY_ENTREGA)
    DATA_VERIFICAR = DateVal(ARRAY_ENTREGA[ui])
    If DATA > DATA_VERIFICAR
       Then DATA_VERIFICAR = BlankDate()
            QuitLoop
    EndIf
  EndFor
  If DATA_VERIFICAR<>BlankDate()
     Then CONTADOR = CONTADOR + 1
          AUX_ARRAY_ENTREGA[CONTADOR] = DATA
          ARRAY_ENTREGA[ii] = ""
          ii=0
  EndIf    
EndFor   

Release Vars ARRAY_ENTREGA
Array ARRAY_ENTREGA [ArraySize(AUX_ARRAY_ENTREGA)]
For ii From 1 To ArraySize(AUX_ARRAY_ENTREGA)
  ARRAY_ENTREGA[ii]=AlinhM(StrVal(AUX_ARRAY_ENTREGA[ii]),10)
EndFor

If ArraySize(ARRAY_ENTREGA)>1
   Then VSDGPARCELAS = StrVal(ArraySize(ARRAY_ENTREGA))+" parcelas"
   Else VSDGPARCELAS = StrVal(ArraySize(ARRAY_ENTREGA))+" parcela"
EndIf

EndProc ;Alinha_Data()

;********************************************************************************
;* Rotina para a escolha do Numero do Pedido                                    *
;*******************************************************************************
Proc SD_Dialog_Pedido(Disparo,Campo,Evento,Elemento)
Private 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"] =  27:
          Temp=False
          Switch
            Case Campo="TG_NPEDIDO" : CancelDialog
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          Switch
            Case Campo="TG_NPEDIDO"  : 
                 VSDGNPEDIDO = ControlValue("TG_NPEDIDO")
                 If Not Isblank(VSDGNPEDIDO)
                    Then VSDGNPEDIDO=AlinhM(ControlValue("TG_NPEDIDO"),6)
                         AcceptDialog      
                 EndIf
          EndSwitch
   EndSwitch
EndIf
Switch
  Case Campo="TG_NPEDIDO":
     MSG_CAMPO="Informe o numero do pedido"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Mouse Hide
Return Temp

EndProc ;SD_Dialog_Pedido()

;*******************************************************************************
;* Desmembramento de Pedidos                                                   *
;*******************************************************************************
Proc Desmembramento_Pedido()
Private SEQ,MSG

TEMP                     = False
SEQ                      = [Sequencia]
VSDGNPEDIDO              = ""
FAZ_PROCESSO             = 0 
NUMERO_PEDIDO_PROCESSADO = ""
GERA_PEDIDO              = True
MSG_REGRA_PED            = ""

Moveto "DP_REL"
Home
Moveto [Sequencia] DP_REL=ImageCCount()
Scan
  Barra(DP_REL, RecNo())
  Aguarde("Aguarde, desmembrando o pedido "+[Numero do Pedido]+" "+BARRA_STRING)
  
  NPARC  = [Numero de Parcelas]
  NPED   = [Numero do Pedido  ]
  VENCTO = [Entrega           ] 
  
  If IsBlank(NPARC)
     Then Mensagem("Pedido "+NPED+" sem data de entrega informado!") 
          Loop 
  EndIf   
  
  ;---- Ocorrencia de Erros ----------------------------------------------------
  MSG = ""
  GetRecord "\\Sistemas\\Vendas\\PedidoG" [Numero do Pedido] To REG_PEDIDO
  If Not RetVal
     Then MSG = "Pedido "+NPED+" n„o ‚ modo grade!"
  EndIf
  
  GetRecord "\\Sistemas\\Vendas\\PedidoC" NPED To REG_PEDIDO                  
  Switch
    Case MSG<>""    : ;Pedido sem modo GRADE
    Case Not RetVal :
         MSG = "Pedido "+NPED+" n„o foi encontrado!"
    Case Search ("PEDIDO DESMEMBRADO PELO AGRUPAMENTO",REG_PEDIDO["Observacao do Pedido"])>0 :
         MSG = "Pedido "+REG_PEDIDO["Numero do Pedido"]+" j  foi desmembrado anteriormente !"
    Case Search ("PEDIDO SORTIDO DESMEMBRADO",REG_PEDIDO["Observacao do Pedido"])>0 :  
         MSG = "Pedido "+NPED+" j  foi desmembrado anteriormente !"                      
    Case Search ("PEDIDO DESMEMBRADO DO PEDIDO",REG_PEDIDO["Observacao do Pedido"])>0 :
         MSG = "Pedido "+REG_PEDIDO["Numero do Pedido"]+" j  fez parte do desmembramento em processos anteriores !"
    Case REG_PEDIDO["Situacao do Pedido"]<>"SUSPENSO" And REG_PEDIDO["Situacao do Pedido"]<>"ABERTO" :
         MSG = "Pedido "+REG_PEDIDO["Numero do Pedido"]+" com a situa‡„o "+REG_PEDIDO["Situacao do Pedido"]+"!"
  EndSwitch
  
  If MSG<>""
     Then Mensagem(MSG)
          Loop
  EndIf
  
  TEMP=True
  Moveto "DP_REL"
  FormKey
  
  ;Apagando registros
  Monta_Tabela("APAGAR")
  
  ;---- Apagando o Status da Tabela de Exce‡äes p/ iniciar os trabalhos --------
  Moveto "DP_EXEC"
  Scan
    Moveto [Status] CtrlBackSpace
  EndScan
  Home
  ;[Status]="1" ;Incompleto
  ;[Status]="2" ;Completo
  ;[Status]="3" ;Que no momento nÆo pode ser incluido por ser fracionado
  ;[Status]="4" ;N„o tem a COr_Tecido no pedido
  
  ;---- Processo de Demembramento ----------------------------------------------
  Moveto "PedidoG"
  Moveto [Numero do Pedido]
  Locate NPED
  If RetVal 
     Then While [Numero do Pedido] = NPED        
            CopyToArray RegPed
  
            ;---- Gerando PEDIDOG --------------------------------------------
            Moveto TEMP_PEDIDOG
            End Down
            CopyFromArray RegPed
            
            Moveto "PedidoG"
            grdant="***"
            Array Array_TM[12]
            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 Qtd=0
                 Then Loop
              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 Mensagem("Item "+Item+" n„o localizado no cadastro de itens.")
                      Loop
              EndIf
              
              ItemNovo=True 
              Moveto DP_ITEM
              Moveto [Codigo do Item]
              Locate Item
              If RetVal
                 Then ItemNovo = False
              EndIf
          
              If Not ItemNovo
                 Then [Quantidade          ] = [Quantidade               ]+Qtd
                 Else End Down
                      [Codigo do Grupo     ] = REG_ITEM["Codigo do Grupo"]
                      [Codigo da Cor_Tecido] = REG_ITEM["Codigo da Cor_Tecido"]
                      [Codigo do Item      ] = Item
                      [Quantidade          ] = Qtd 
              EndIf
              UnLockRecord
              
              
              ;Adicionando registros em uma tabela PedidoI tempor ria para utiliz‡Æo
              ;posterior ao gerar tabelas por vencimentos
              ItemNovo=True
              Moveto TEMP_PEDIDOI
              Moveto [Codigo do Item]
              Locate Item
              If RetVal Then ItemNovo=False 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"] 
                      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"
            Skip
            If Eot() Then QuitLoop EndIF
          EndWhile
  EndIf
  
  ;----- Totalizando Grupo -----------------------------------------------------
  GRUPO = ""
  
  Do_it!
  Sort DP_ITEM On "Codigo do Grupo"
  CoeditKey
  
  Moveto DP_ITEM
  Home
  Scan
    If GRUPO<>[Codigo do Grupo]
       Then If GRUPO<>""
               Then Moveto DP_GRUPO
                    End Down
                    [Codigo do Grupo] = GRUPO
                    [Quantidade     ] = QUANTIDADE
                    UnLockRecord
                    
                    Moveto DP_ITEM     
            EndIf
            QUANTIDADE = 0
            GRUPO      = [Codigo do Grupo] 
    EndIf      
    QUANTIDADE = QUANTIDADE + [Quantidade]
  EndScan
  
  If QUANTIDADE>0
     Then Moveto DP_GRUPO
          End Down
          [Codigo do Grupo] = GRUPO
          [Quantidade     ] = QUANTIDADE
          UnLockRecord
  EndIf
  
  ;----- Totalizando Cor -------------------------------------------------------
  COR=""
  
  Do_it!
  Sort DP_ITEM On "Codigo da Cor_Tecido"
  CoeditKey
  
  Moveto DP_ITEM
  Home
  Scan
    If COR<>[Codigo da Cor_Tecido]
       Then If COR<>""
               Then Moveto DP_COR
                    End Down
                    [Codigo da Cor_Tecido] = COR
                    [Quantidade          ] = QUANTIDADE
                    UnLockRecord
                    
                    Moveto DP_ITEM          
            EndIf
            QUANTIDADE = 0
            COR        = [Codigo da Cor_Tecido] 
    EndIf      
    QUANTIDADE  = QUANTIDADE + [Quantidade]
  EndScan
  
  If QUANTIDADE>0
     Then Moveto DP_COR
          End Down
          [Codigo da Cor_Tecido] = COR
          [Quantidade          ] = QUANTIDADE
          UnLockRecord
  EndIf
  FAZ_PROCESSO = FAZ_PROCESSO + 1
  
  ;---- Processo da separacao dos PEDIDOS em lotes -----------------------------
  Moveto DP_ITEM
  Moveto [Quantidade] TOTAL=ImageCSum()
  
  If NPARC>0
     Then ANT_TOTAL_PARC    = 0
          TOTAL_PARC_ULTIMA = 0
          TOTAL_PARC        = Round(TOTAL / NPARC,0)
          Switch
            Case (TOTAL_PARC * NPARC) - TOTAL > 0 : TOTAL_PARC_ULTIMA = TOTAL_PARC - ((TOTAL_PARC * NPARC) - TOTAL)
            Case TOTAL - (TOTAL_PARC * NPARC) > 0 : TOTAL_PARC_ULTIMA = TOTAL_PARC + (TOTAL - (TOTAL_PARC * NPARC))
          EndSwitch
  EndIf
  
  ;----------- Vencimentos --------------------------------
  Array ARRAY_VENCTO[NPARC]
  CONTA_PARC    = 0
  While True
    PosI = Search("/",VENCTO)
    If PosI > 0
       Then AUX_VENCTO = SubStr(VENCTO,1,PosI-1) 
            VENCTO     = SubStr(VENCTO,PosI+1,Len(VENCTO))
       Else AUX_VENCTO = VENCTO       
    EndIf 
    CONTA_PARC = CONTA_PARC + 1
    ARRAY_VENCTO[CONTA_PARC] = AUX_VENCTO
    If CONTA_PARC = NPARC Then QuitLoop EndIf 
  EndWhile  
  
  ;Total de cada parcela que antecede … ultima parcela OU parcela £nica
  ;TOTAL_PARC
  ;Total da ultima parcela (senÆo ser  0, caso s¢ tenho uma parcela)
  ;TOTAL_PARC_ULTIMA
  
  DEP_EXEC      = NRecords("DP_EXEC")
  CONTA_PARC    = 0
  PARAM_EXCECAO = 20        ;Pode exceder o limite de cada vencimento em at‚ 20%    
  
  ;----- Ignorando cores que nÆo estÆo no pedido ------------------------------- 
  Moveto "DP_EXEC"
  Scan
    COR_TECIDO = [Codigo da Cor_Tecido]
    
    Moveto DP_COR
    Moveto [Codigo da Cor_Tecido]
    Locate COR_TECIDO
    If Not RetVal
       Then Moveto "DP_EXEC"
            [Status]="4"
       Else Moveto "DP_EXEC"      
    EndIf 
  EndScan
  
  ;----- Verificando se h  todas as cores do pedido nas exce‡äes --------------
  
  CONTADOR = 0
  NR       = NRecords(DP_COR)  
  Moveto DP_COR
  Home
  Scan
    COR_TECIDO = [Codigo da Cor_Tecido]
    
    Moveto "DP_EXEC"
    Moveto [Codigo da Cor_Tecido]
    Locate COR_TECIDO
    If Not RetVal
       Then CONTADOR = CONTADOR + 1      
    EndIf
    Moveto DP_COR
  EndScan
  
  If CONTADOR = NR
     Then Mensagem("N„o h  registros a serem processados!//"+
                   "N„o h  cadastro de regra para cor/itens do pedido "+NPED)
          Moveto "DP_REL"
          Loop            
  EndIf
  
  ;---- Copiando PedidoC Original ------------------------
  NUMERO_PEDIDO_PROCESSADO = ""
  Moveto "\\Sistemas\\Vendas\\PedidoC"   
  Moveto [Numero do Pedido]
  Locate NPED
  CopyToArray REG_PEDIDOC
  While CONTA_PARC <= NPARC
    CONTA_PARC = CONTA_PARC + 1
    
    ;---- Ultimo Vencimento --------------------------------
    If CONTA_PARC = NPARC And TOTAL_PARC_ULTIMA > 0
       Then TOTAL_PARC = TOTAL_PARC_ULTIMA
    EndIf
    
    FIM_PROCESSO     = False
    GERA_PEDIDO      = True
    NAO_GERA_PEDIDO  = 0
    Seq_Pedido       = 0
    Seq_PedidoG      = 0
    TOTAL_PROCESSADO = 0
    GRADE            = "***" 
    
    Gera_PedidoC(CONTA_PARC)
    
    
    ;Sempre quando iniciar um pedido, as cores serÆo re-analisadas para inclusao 
    Moveto "DP_EXEC"
    Home
    Scan
      If [Status] = "3" Then Moveto [Status] CtrlBackSpace EndIf
    EndScan
      
    INICIO_PEDIDO = True
    While INICIO_PEDIDO     
       Barra(TOTAL_PARC,Seq_Pedido)
       Aguarde("Aguarde, ajustando pedido "+NPED+" "+BARRA_STRING)
  
       FAZ_COR          = False
       CONTADOR         = 0
       CONTA_EXEC       = 0 
       
       ;---- Tabela de Exce‡äes -------------------------------------------------- 
       Moveto "DP_EXEC"
       Home
       While CONTADOR <= DEP_EXEC
         CONTADOR = CONTADOR + 1
         Moveto [Sequencia]
         Locate CONTADOR
         If RetVal
            Then If [Status]<>"2" And [Status]<>"3" And [Status]<>"4"
                    Then MARCA        = [Codigo da Marca     ]
                         COR_TECIDO   = [Codigo da Cor_Tecido]
                         FAZ_COR      = False
                         If [Fracionado]="N" Then FRACIONADO = False Else FRACIONADO = True EndIF
                         
                         TOTAL_COR    = 0
                         Moveto DP_COR
                         Moveto [Codigo da Cor_Tecido]
                         Locate COR_TECIDO
                         If RetVal
                            Then FAZ_COR   = True
                                 TOTAL_COR = [Quantidade]
                         EndIf  
                         Moveto "DP_EXEC"
                         
                         QuitLoop
                    Else If [Status]="2" Or [Status]="4" Then CONTA_EXEC = CONTA_EXEC + 1 EndIf         
                 EndIf 
            Else Home
         EndIf    
         If CONTA_EXEC = DEP_EXEC
            Then FIM_PROCESSO = True
                 TOTAL_PARC   = TOTAL_PROCESSADO
                 
                 Moveto "DP_EXEC"
                 Moveto [Status]
                 Locate "2"
                 If Not RetVal
                    Then NAO_GERA_PEDIDO = TOTAL_PROCESSADO
                 EndIf
                 
                 CONTA_PARC = NPARC+1 
                 QuitLoop
         EndIf         
       EndWhile
         
       If Not FAZ_COR And CONTA_PARC <= NPARC   
          Then Moveto "DP_EXEC"
               [Status]="4"
               Moveto DP_ITEM
               TOTAL_PROCESSADO = TOTAL_PROCESSADO + [Quantidade]
               NAO_GERA_PEDIDO  = NAO_GERA_PEDIDO + [Quantidade]
               If CONTA_PARC < NPARC 
                  Then ;Se percorreu todas as excecoes e ainda tiver um limite a ser preenchido e 
                       ;as cores das exce‡äes nÆo tem esse limite para esse preenchimento por 
                       ;ser as cores nao fracionadas, este pedido sera encerradi com menos pe‡as 
                       ;Status="2" ou "Status="3" (vide legenda acima)
                       ;TOTAL_PARC = TOTAL_PROCESSADO
                       ;QuitLoop
               EndIf
       EndIf
       
       While FAZ_COR And Not FIM_PROCESSO
         If (CONTA_PARC <> NPARC And (TOTAL_PARC - (TOTAL_PROCESSADO + TOTAL_COR) < 0)) 
            Then AUX_EXCECAO = Round(TOTAL_PARC + ((TOTAL_PARC*PARAM_EXCECAO)/100),0)
                 If AUX_EXCECAO - (TOTAL_PROCESSADO + TOTAL_COR) >=0
                    Then ANT_TOTAL_PARC = TOTAL_PARC 
                         TOTAL_PARC     = TOTAL_PROCESSADO + TOTAL_COR
                    Else Moveto "DP_EXEC"
                         [Status]="3"
                         Moveto DP_ITEM
                         QuitLoop
                 EndIf
         EndIF
         
         If CONTA_PARC = NPARC 
            Then ;No ultimo vencimento, vÆo todos as pe‡as
                 FRACIONADO = True
         EndIf
          
         SAIR_LOOP       = False
         TOTAL_COR_ATUAL = 0
         Moveto DP_ITEM
         Moveto [Codigo da Cor_Tecido]
         Locate COR_TECIDO
         If RetVal
            Then While [Codigo da Cor_Tecido] = COR_TECIDO
                   ACHOU_COR = True
                   COD_ITEM  = [Codigo do Item]
                   GetRecord "\\Sistemas\\Estoque\\Itens" COD_ITEM To REG_ITEM
                   If Not RetVal
                      Then Mensagem("Item "+COD_ITEM+" n„o localizado no cadastro!")
                      Else If MARCA = REG_ITEM["Codigo da Marca"]
                              Then QTD            = [Quantidade           ]
                                   QTD_PROCESSADA = [Quantidade Processada]
                                   QTD            = QTD - QTD_PROCESSADA
                                   
                                   If QTD <> QTD_PROCESSADA And QTD>0
                                      Then Switch
                                     
                                             Case (TOTAL_PROCESSADO + QTD) <= TOTAL_PARC Or TOTAL_PARC=0 : 
                                                  
                                                  If Adiciona_Pedido()
                                                     Then TOTAL_COR_ATUAL  = TOTAL_COR_ATUAL + QTD
                                                          TOTAL_PROCESSADO = TOTAL_PROCESSADO + QTD
                                                  
                                                          Moveto DP_ITEM
                                                          [Quantidade Processada] = [Quantidade Processada] + QTD
                                                          UnLockRecord 
                                                  EndIF        
                                          
                                             Case (TOTAL_PROCESSADO + QTD) > TOTAL_PARC And FRACIONADO :
                                                  ;Neste caso, ser  analisado grupo a grupo, referente … cor 
                                                  ;para que possa ficar sortidos nos grupos
                                                  QTD = 1
                                                  
                                                  If Adiciona_Pedido()
                                                     Then TOTAL_COR_ATUAL  = TOTAL_COR_ATUAL + QTD
                                                          TOTAL_PROCESSADO = TOTAL_PROCESSADO + QTD
                                                  
                                                          Moveto DP_ITEM
                                                          [Quantidade Processada] = [Quantidade Processada] + QTD
                                                          UnLockRecord
                                                  EndIf         
                                                  
                                             Case (TOTAL_PROCESSADO + QTD) > TOTAL_PARC And Not FRACIONADO : 
                                                  SAIR_LOOP=True     
                                           EndSwitch  
                                      Else If QTD=0 
                                              Then TOTAL_COR_ATUAL = TOTAL_COR_ATUAL + [Quantidade]
                                           EndIf            
                                   EndIf
                                   
                                   If TOTAL_PROCESSADO = TOTAL_PARC 
                                      Then SAIR_LOOP = True
                                   EndIf   
                                      
                                   Moveto DP_COR
                                   Moveto [Codigo da Cor_Tecido]
                                   Locate COR_TECIDO
                                   If RetVal
                                      Then If [Quantidade] = TOTAL_COR_ATUAL 
                                              Then SAIR_LOOP = True
                                                   Moveto "DP_EXEC"
                                                   [Status]="2"
                                                   Moveto DP_ITEM
                                           EndIf 
                                   EndIf   
                              Else ACHOU_COR=False
                           EndIf    
                   EndIf
                   Moveto DP_ITEM
                   If Not ACHOU_COR
                      Then Moveto "DP_EXEC"
                           [Status]="4"
                           Moveto DP_ITEM
                           TOTAL_PROCESSADO = TOTAL_PROCESSADO + [Quantidade]
                           NAO_GERA_PEDIDO  = NAO_GERA_PEDIDO + [Quantidade]
                           QuitLoop
                   EndIf
                   Skip
                   If Eot() Then QuitLoop EndIf
                   Locate Next COR_TECIDO
                   If Not RetVal
                      Then If SAIR_LOOP Then QuitLoop EndIf
                           Home
                           Locate Next COR_TECIDO
                   EndIf    
                 EndWhile
         EndIf
         QuitLoop
       EndWhile
       If (TOTAL_PROCESSADO >= TOTAL_PARC And CONTA_PARC < NPARC) Or FIM_PROCESSO 
          Then If ANT_TOTAL_PARC > 0 And Not FIM_PROCESSO
                  Then TOTAL_PARC     = ANT_TOTAL_PARC
                       ANT_TOTAL_PARC = 0
               EndIf
               INICIO_PEDIDO = False
               If NAO_GERA_PEDIDO >= TOTAL_PROCESSADO
                  Then GERA_PEDIDO = False
               EndIf   
       EndIf    
    EndWhile
    
    If Not GERA_PEDIDO 
       Then Moveto "\\Sistemas\\Vendas\\PedidoC"
            Moveto [Numero do Pedido]
            Locate NPED_NOVO
            If RetVal
               Then Del
            EndIf
            Moveto DP_ITEM
    EndIf
    
    If CONTA_PARC = NPARC
       Then SAIR_PROCESSO = True
            Moveto "DP_EXEC"
            Home
            Scan          
              If [Status]<>"2"
                 Then SAIR_PROCESSO = False
                      QuitLoop
              EndIf   
            EndScan
            
            If Not SAIR_PROCESSO
               Then NR       = NRecords("DP_EXEC")  
                    CONTADOR = 0 
                    Moveto "DP_EXEC"
                    Home
                    Scan          
                      If [Status]="4"
                         Then If Not SAIR_PROCESSO Then SAIR_PROCESSO = True EndIF
                              CONTADOR = CONTADOR + 1
                      EndIf   
                    EndScan
                    
                    If NR = CONTADOR 
                       Then GERA_PEDIDO = False
                    EndIf
            EndIf
            If SAIR_PROCESSO Then QuitLoop EndIF     
    EndIf
    Moveto "DP_REL"
  EndWhile
  ;---- Atualiza PedidoC Original ------------------------------------------------
  If NUMERO_PEDIDO_PROCESSADO<>"" And GERA_PEDIDO
     Then Moveto "\\Sistemas\\Vendas\\PedidoC"   
          Moveto [Numero do Pedido]
          Locate NPED
          [Observacao do Pedido] = [Observacao do Pedido] + " [**PEDIDO SORTIDO DESMEMBRADO PARA -> "+NUMERO_PEDIDO_PROCESSADO+"**]"
          [Situacao do Pedido  ] = "CANCELADO"
          UnLockRecord
  EndIf
  
  If Not GERA_PEDIDO   
     Then Mensagem("N„o h  cadastro de regra para cor/itens do pedido "+NPED)
  EndIf
  
  Moveto "DP_REL"
EndScan

If FAZ_PROCESSO=0 
   Then Mensagem("N„o h  registros a serem processados!")
        TEMP = False                           
EndIf

Moveto "DP_REL"
Moveto [Sequencia]
Locate SEQ
If NUMERO_PEDIDO_PROCESSADO <>"" Then FormKey EndIf
Return TEMP

EndProc ;Desmembramento_Pedido()

;*******************************************************************************
;* Rotina Gera Tabela PedidoC                                                  *
;*******************************************************************************
Proc Gera_PedidoC(PARAM)
Private PARAM

Moveto "\\Sistemas\\Vendas\\PedidoC"
End
NPED_NOVO = AlinhM(StrVal((NumVal([Numero do Pedido]) + 1)),6)
REG_PEDIDOC["Numero do Pedido"] = NPED_NOVO
Down
CopyFromArray REG_PEDIDOC
[Data de Entrega     ] = DateVal(ARRAY_VENCTO[PARAM])
[Observacao do Pedido] = [Observacao do Pedido] + " [**PEDIDO DESMEMBRADO PELO SORTIDO N§ "+NPED+"**]"
UnLockRecord

If NUMERO_PEDIDO_PROCESSADO<>"" Then NUMERO_PEDIDO_PROCESSADO = NUMERO_PEDIDO_PROCESSADO + ", " EndIf
NUMERO_PEDIDO_PROCESSADO = NUMERO_PEDIDO_PROCESSADO + NPED_NOVO 

EndProc ;Gera_PedidoC()  

;*******************************************************************************
;* Rotina Gera Tabela PedidoI                                                  *
;*******************************************************************************
Proc Adiciona_Pedido()
Aguarde("Convertendo pedido modo padr„o")

Barra(TOTAL_PARC,Seq_Pedido)
Aguarde("Ajustando item "+COD_ITEM+" do pedido "+NPED+" "+BARRA_STRING)

Moveto TEMP_PEDIDOI
Moveto [Codigo do Item]
Locate COD_ITEM
If Not RetVal 
   Then Return False 
   Else CopyToArray REG_PEDG
EndIf

Seq_Pedido = Seq_Pedido + 1
Moveto "\\Sistemas\\Vendas\\PedidoI"    
End Down
[Numero do Pedido         ]=NPED_NOVO
[Item do Pedido           ]=Seq_Pedido
[Codigo do Item           ]=COD_ITEM

[Codigo da Cor_Tecido     ]=REG_ITEM["Codigo da Cor_Tecido"]
[Tamanho                  ]=REG_PEDG["Tamanho"]
[Quantidade               ]=QTD
[Quantidade Faturada      ]=BlankNum()

[Preco Unitario           ]=REG_PEDG["Preco Unitario"]
[Taxa Desconto Unitario   ]=REG_PEDG["Taxa Desconto Unitario"]
[Valor Desconto Unitario  ]=REG_PEDG["Valor Desconto Unitario"]
[Preco Total              ]=[Quantidade]*([Preco Unitario]-[Valor Desconto Unitario])
[Preco Unitario Tabela    ]=REG_PEDG["Preco Unitario Tabela"]
[Taxa Desconto Total      ]=REG_PEDG["Taxa Desconto Total"]
[Valor Desconto Total     ]=REG_PEDG["Valor Desconto Total"]
[Peso Liquido             ]=REG_PEDG["Peso Liquido"]
[Peso Embalagem           ]=REG_PEDG["Peso Embalagem"]
[Volumes                  ]=REG_PEDG["Volumes"]
[ItemSortido              ]="S"

OBS_SORT="[S]"
If [Observacao_Item]<>""
   Then [Observacao_Item] = [Observacao_Item] + " " + OBS_SORT
   Else [Observacao_Item] = OBS_SORT
EndIf            

[Codigo da Tabela         ]=REG_PEDG["Codigo da Tabela"]                                         
[Tipo Tributacao          ]=REG_PEDG["Tipo Tributacao"]      
[CFO                      ]=REG_PEDG["CFO"]
[Tributacao de ICMS       ]=REG_PEDG["Tributacao de ICMS"]
[Aliquota Reduzida BCICMS ]=REG_PEDG["Aliquota Reduzida BCICMS"]
[Aliquota de ICMS         ]=REG_PEDG["Aliquota de ICMS"]
[Valor do ICMS            ]=REG_PEDG["Valor do ICMS"]

[CSOSN                    ]=REG_PEDG["CSOSN"]    
[MVA                      ]=REG_PEDG["MVA"]
[NCM                      ]=REG_PEDG["NCM"]
                            
[ICMS_ST_Aliquota         ]=REG_PEDG["ICMS_ST_Aliquota"] 
[ICMS_ST_BC               ]=REG_PEDG["ICMS_ST_BC"]            
[ICMS_ST_Valor            ]=REG_PEDG["ICMS_ST_Valor"] 
[ICMS_BC                  ]=REG_PEDG["ICMS_BC"] 
[ICMS_CredSN_Aliquota     ]=REG_PEDG["ICMS_CredSN_Aliquota"] 
[ICMS_CredSN_Valor        ]=REG_PEDG["ICMS_CredSN_Valor"]     
[Tributacao de IPI        ]=REG_PEDG["Tributacao de IPI"]
[Aliquota de IPI          ]=REG_PEDG["Aliquota de IPI"]
[Valor do IPI             ]=REG_PEDG["Valor do IPI"]
[IPI_CST                  ]=REG_PEDG["IPI_CST"] 
[IPI_BC                   ]=REG_PEDG["IPI_BC"]            
                      
[Tributacao de ISSQN      ]=REG_PEDG["Tributacao de ISSQN"] 
[Aliquota de ISSQN        ]=REG_PEDG["Aliquota de ISSQN"] 
[Codigo_Servico           ]=REG_PEDG["Codigo_Servico"]            
[ISSQN_BC                 ]=REG_PEDG["ISSQN_BC"] 
[ISSQN_UF                 ]=REG_PEDG["ISSQN_UF"] 
                         
[PIS_CST                  ]=REG_PEDG["PIS_CST"] 
[PIS_Aliquota             ]=REG_PEDG["PIS_Aliquota"] 
[PIS_BC                   ]=REG_PEDG["PIS_BC"]            
[PIS_Valor                ]=REG_PEDG["PIS_Valor"] 
                         
[COFINS_CST               ]=REG_PEDG["COFINS_CST"] 
[COFINS_Aliquota          ]=REG_PEDG["COFINS_Aliquota"] 
[COFINS_BC                ]=REG_PEDG["COFINS_BC"]            
[COFINS_Valor             ]=REG_PEDG["COFINS_Valor"] 
UnLockRecord

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

;---- Achando o Item do PedidoG ------------------------------------------------
GetRecord "\\Sistemas\\Estoque\\Itens" COD_ITEM To REG_ITEM
If Not RetVal
   Then Return False
EndIF   
GetRecord "\\Sistemas\\Estoque\\TpGrade" REG_ITEM["Codigo da Grade"] To REG_GRADE
If RetVal
   Then Aux_Item      = ""
        POSICAO_GRADE = 0
        For jk From 1 To 12   
          Switch
            Case jk=1 : Aux=REG_GRADE["Codigo Item1"]  
            Case jk=2 : Aux=REG_GRADE["Codigo Item2"]  
            Case jk=3 : Aux=REG_GRADE["Codigo Item3"]  
            Case jk=4 : Aux=REG_GRADE["Codigo Item4"]  
            Case jk=5 : Aux=REG_GRADE["Codigo Item5"]  
            Case jk=6 : Aux=REG_GRADE["Codigo Item6"]  
            Case jk=7 : Aux=REG_GRADE["Codigo Item7"]  
            Case jk=8 : Aux=REG_GRADE["Codigo Item8"]  
            Case jk=9 : Aux=REG_GRADE["Codigo Item9"]  
            Case jk=10: Aux=REG_GRADE["Codigo Item10"] 
            Case jk=11: Aux=REG_GRADE["Codigo Item11"] 
            Case jk=12: Aux=REG_GRADE["Codigo Item12"] 
          EndSwitch
          
          If Rtrim(Aux)<>""
             Then If Len(Aux)=1
                     Then Item     = SubStr(COD_ITEM,1,9)+Aux
                          Aux_Item = SubStr(COD_ITEM,1,9)
                     Else Item     = SubStr(COD_ITEM,1,8)+Aux
                          Aux_Item = SubStr(COD_ITEM,1,8)                            
                  EndIf
                  If Len(Item)=10 And Item=COD_ITEM 
                     Then POSICAO_GRADE=jk 
                          QuitLoop 
                  EndIf
          EndIf
        EndFor        
        
        If Aux_Item<>""
           Then Moveto TEMP_PEDIDOG
                Moveto [Codigo do Item]
                Locate Pattern Aux_Item+".."
                If RetVal
                   Then CopyToArray REG_PEDG
                        
                        ACHOU_ITEM = False
                        Moveto "PedidoG"
                        Moveto [Numero do Pedido]
                        Locate NPED_NOVO
                        If RetVal
                           Then While [Numero do Pedido] = NPED_NOVO
                                  If [Codigo do item] = REG_PEDG["Codigo do Item"]
                                     Then ACHOU_ITEM = True
                                          QuitLoop
                                  EndIf    
                                  Skip
                                  If Eot() Then QuitLoop EndIf
                                EndWhile       
                        EndIf
                        
                        If Not ACHOU_ITEM
                           Then Seq_PedidoG = Seq_PedidoG + 1
                                For jk From 1 To 12
                                  If jk = POSICAO_GRADE Then Loop EndIf
                                  Switch
                                    Case jk=1 : REG_PEDG["Qtd1"]   = BlankNum()
                                    Case jk=2 : REG_PEDG["Qtd2"]   = BlankNum()
                                    Case jk=3 : REG_PEDG["Qtd3"]   = BlankNum()
                                    Case jk=4 : REG_PEDG["Qtd4"]   = BlankNum()
                                    Case jk=5 : REG_PEDG["Qtd5"]   = BlankNum()
                                    Case jk=6 : REG_PEDG["Qtd6"]   = BlankNum()  
                                    Case jk=7 : REG_PEDG["Qtd7"]   = BlankNum()  
                                    Case jk=8 : REG_PEDG["Qtd8"]   = BlankNum()
                                    Case jk=9 : REG_PEDG["Qtd9"]   = BlankNum()
                                    Case jk=10: REG_PEDG["Qtd10"]  = BlankNum()
                                    Case jk=11: REG_PEDG["Qtd11"]  = BlankNum()
                                    Case jk=12: REG_PEDG["Qtd12"]  = BlankNum()
                                  EndSwitch
                                EndFor
                                REG_PEDG["Numero do Pedido"]=NPED_NOVO
                                REG_PEDG["Item do Pedido"  ]=Seq_PedidoG
                                End Down
                                CopyFromArray REG_PEDG
                           Else AUX_QTD = 0 
                                
                                Moveto TEMP_PEDIDOG
                                Moveto Field "QTD"+StrVal(POSICAO_GRADE)
                                AUX_QTD = []
                                 
                                Moveto "PedidoG"
                                Moveto Field "QTD"+StrVal(POSICAO_GRADE)
                                [] = [] + AUX_QTD  
                        EndIf
                        
                        AUX_QTD = 0
                        For jk From 1 To 12
                          Moveto Field "QTD"+StrVal(jk)
                          AUX_QTD = AUX_QTD + []                             
                        EndFor
                        
                        [Quantidade               ]=AUX_QTD
                        [Preco Unitario           ]=REG_PEDG["Preco Unitario"]

                        [Tipo Desconto Item       ]=""
                        [Valor Desconto Item      ]=BlankNum()
                        [Taxa Desconto Unitario   ]=BlankNum()
                        [Valor Desconto Unitario  ]=BlankNum()
                        
                      
                        [Preco Total              ]=[Quantidade] * [Preco Unitario] 
                        [Preco Unitario Tabela    ]=REG_PEDG["Preco Unitario Tabela"]
                       
                        [Taxa Desconto Total      ]=BlankNum()
                        [Valor Desconto Total     ]=BlankNum()        
                                                  
                   Else Return False
                EndIf  
         EndIf
   Else Return False
EndIf   

   



Return True

EndProc ;Gera_PedidoI() 

;*******************************************************************************
;* Encerra Entrega                                                             *
;*******************************************************************************
Proc Verifica_Alteracao_Entrega(PARAM)

ACHOU_DIFERENCA=False

While Not ACHOU_DIFERENCA
  If ArraySize(ARRAY_ENTREGA) <> ArraySize(INICIO_ARRAY_ENTREGA)
     Then ACHOU_DIFERENCA=True
          QuitLoop
  EndIf

  For i From 1 To ArraySize(ARRAY_ENTREGA)
    If ARRAY_ENTREGA[i] <> INICIO_ARRAY_ENTREGA[i]
       Then ACHOU_DIFERENCA=True
             QuitLoop
    EndIf
  EndFor
  QuitLoop
EndWhile

If PARAM<>""
   Then If ACHOU_DIFERENCA
           Then Return True
           Else Return False
        EndIf   
EndIf   
 
If ACHOU_DIFERENCA 
  Then COR_MENSAGEM="ALERTA"
       MSG =        Completa("Foi  detectado  altera‡”es  nas datas de entrega desta rela‡„o.",63," ")+"////"
       MSG =  MSG + Completa("Se sair desta opera‡„o, todas as altera‡”es ser„o perdidas e as",63," ")+"//"
       MSG =  MSG + Completa("datas  de  entrega  inseridas/alteradas  n„o ser„o adicionadas.",63," ")+"//"
       MSG =  MSG + Completa("Deseja realmente sair desta opera‡„o?",63," ")   
       ConfGeral(MSG)
       If OK<>"S"
          Then Return False
       EndIF                               
EndIf

Return True

EndProc ;Verifica_Alteracao_Entrega()

;*******************************************************************************
;* Adiciona Entrega                                                            *
;*******************************************************************************
Proc Adiciona_Entrega()

If Not Verifica_Alteracao_Entrega("Add_Entrega") Or VSDGPARCELAS=""
   Then Return
EndIf
             
NPED = [Numero do Pedido]
GetRecord "\\Sistemas\\Vendas\\PedidoC" NPED To REG_PEDIDO
If Not RetVal
   Then Mensagem("Pedido "+NPED+" n„o foi localizado nos Pedidos!")
        Return
EndIf

ENTREGA = ""
For ii From 1 To ArraySize(ARRAY_ENTREGA)
  If ii<>1 Then ENTREGA = ENTREGA + "/" EndIf
  ENTREGA = ENTREGA + AlinhM(StrVal(ARRAY_ENTREGA[ii]),10)
Endfor

NP = NumVal(Rtrim(SubStr(VSDGPARCELAS,1,Search("P",Upper(VSDGPARCELAS))-1)))

[Entrega           ]=ENTREGA
[Numero de Parcelas]=NP
UnlockRecord

EndProc ;Adiciona_Entrega()

;*******************************************************************************
;* Di logo de Entrega                                                          *
;*******************************************************************************
Proc Sd_Dialog_ENTREGA(Disparo,Campo,Evento,Elemento)

Temp           = True
MSG_CAMPO      = ""                                               
TECLA          = "Ins=Adicionar Dt.Entrega  PgDn=Finalizar"
                           
If INICIO_DIALOG
   Then Campo = "TG_ENTREGA"
        INICIO_DIALOG=False
EndIf   

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_ENTREGA"     : If Verifica_Alteracao_Entrega("") 
                                            Then CancelDialog
                                         EndIf   
            Case Campo="TG_DTENTREGA"   : VSDGDTENTREGA = BlankDate()
                                         Campo="TG_ENTREGA"
          EndSwitch
     
     Case Evento["KeyCode"] = -81 And Campo="TG_ENTREGA" :
          If ArraySize(ARRAY_ENTREGA)>0 And ARRAY_ENTREGA[1] <> ""
             Then Adiciona_Entrega()
                  CancelDialog
          EndIf        
     Case Evento["KeyCode"] = -82 And Campo="TG_ENTREGA" : Campo="TG_DTENTREGA"
     
     Case Evento["KeyCode"] = -83 And Campo="TG_ENTREGA" :
          If ArraySize(ARRAY_ENTREGA)>0 And ARRAY_ENTREGA[1] <> ""
             Then ConfGeral("Deseja excluir a data "+ARRAY_ENTREGA[NumVal(VSDGCENTREGA)]+" ?")
                  If OK="S"
                     Then If ArraySize(ARRAY_ENTREGA) = 1 
                            Then ARRAY_ENTREGA[1] = "" 
                                 VSDGPARCELAS = ""
                            Else Indice = NumVal(VSDGCENTREGA)
                                
                                 Array AUX_ARRAY_ENTREGA[ArraySize(ARRAY_ENTREGA)]
                                 For ii From 1 To ArraySize(ARRAY_ENTREGA)
                                   AUX_ARRAY_ENTREGA[ii]=ARRAY_ENTREGA[ii]
                                 Endfor
                                 
                                 Release Vars ARRAY_ENTREGA
                                 CONTADOR=0
                                 Array ARRAY_ENTREGA[ArraySize(AUX_ARRAY_ENTREGA)-1]
                                 For ii From 1 To ArraySize(AUX_ARRAY_ENTREGA)
                                   If DateVal(AUX_ARRAY_ENTREGA[Indice])<>DateVal(AUX_ARRAY_ENTREGA[ii])
                                      Then CONTADOR = CONTADOR + 1 
                                           ARRAY_ENTREGA[CONTADOR]=AUX_ARRAY_ENTREGA[ii]
                                   EndIf
                                 Endfor
                                 Release Vars CONTADOR,AUX_ARRAY_ENTREGA
                                 
                                 If ArraySize(ARRAY_ENTREGA)>1
                                    Then VSDGPARCELAS = StrVal(ArraySize(ARRAY_ENTREGA))+" parcelas"
                                    Else VSDGPARCELAS = StrVal(ArraySize(ARRAY_ENTREGA))+" parcela"
                                 EndIf
                                 RefreshDialog
                          EndIf    
                  EndIf
          EndIf
     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_DTENTREGA"       : Campo="TG_ENTREGA"
                         VSDGDTENTREGA = ControlValue("TG_DTENTREGA")
                         
                         If Isblank(VSDGDTENTREGA)
                            Then Campo="TG_DTENTREGA"
                            Else ACHOU_DATA = False
                                 If ARRAY_ENTREGA[1]<>"" 
                                    Then For ii From 1 To ArraySize(ARRAY_ENTREGA)
                                           If DateVAl(VSDGDTENTREGA) = DateVal(ARRAY_ENTREGA[ii])
                                              Then ACHOU_DATA = True
                                                   QuitLoop
                                           EndIf
                                         EndFor
                                 EndIf
                               
                                 If Not ACHOU_DATA
                                    Then If ARRAY_ENTREGA[1] = ""
                                            Then ARRAY_ENTREGA[1] = AlinhM(StrVal(VSDGDTENTREGA),10)
                                                 VSDGPARCELAS = "1 parcela"
                                            Else Array AUX_ARRAY_ENTREGA[ArraySize(ARRAY_ENTREGA)+1]
                                                 For ii From 1 To ArraySize(ARRAY_ENTREGA)+1
                                                   If ii = ArraySize(ARRAY_ENTREGA)+1
                                                      Then AUX_ARRAY_ENTREGA[ii] = VSDGDTENTREGA
                                                      Else AUX_ARRAY_ENTREGA[ii] = ARRAY_ENTREGA[ii]
                                                   EndIf
                                                 EndFor
                                                 Release Vars ARRAY_ENTREGA
                                                 
                                                 Array ARRAY_ENTREGA[ArraySize(AUX_ARRAY_ENTREGA)]
                                                 For ii From 1 To ArraySize(AUX_ARRAY_ENTREGA)
                                                   ARRAY_ENTREGA[ii] = AUX_ARRAY_ENTREGA[ii]
                                                 EndFor
                                                 Alinha_Data()
                                         EndIf
                                         VSDGDTENTREGA = BlankDate()
                                    Else Mensagem("Data "+StrVal(VSDGDTENTREGA)+" j  foi inserida!")
                                         Campo="TG_DTENTREGA"
                                 EndIF
                         EndIf
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
	Case Campo="":
		 MSG_CAMPO=""   
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc Edita_Entrega()
Private CONTADOR,AUX_ARRAY_ENTREGA,ii

If [Numero do Pedido]=""
   Then Return
EndIf   
   
NPED        = [Numero do Pedido]
ENTREGA     = Ltrim(Rtrim([Entrega]))
AUX_ENTREGA = ENTREGA 

If AUX_ENTREGA<>""
   Then CONTADOR     = 0
        DynArray AUX_ARRAY_ENTREGA[]
        
        While AUX_ENTREGA<>""
          CONTADOR = CONTADOR + 1
          AUX_ARRAY_ENTREGA[CONTADOR] = SubStr(AUX_ENTREGA,1,10)
          
          AUX_ENTREGA = Ltrim(Rtrim(SubStr(AUX_ENTREGA,12,Len(AUX_ENTREGA))))
        EndWhile 
        
        If DynArraySize(AUX_ARRAY_ENTREGA)>0
           Then Array ARRAY_ENTREGA[DynArraySize(AUX_ARRAY_ENTREGA)]
                For ii From 1 To DynArraySize(AUX_ARRAY_ENTREGA)
                  ARRAY_ENTREGA[ii] = AUX_ARRAY_ENTREGA[ii]
                EndFor
           Else Array ARRAY_ENTREGA[1]
                ARRAY_ENTREGA[1] = ""
        EndIf
        
        Alinha_Data()
        
        Array INICIO_ARRAY_ENTREGA[ArraySize(ARRAY_ENTREGA)]
        For i From 1 To ArraySize(ARRAY_ENTREGA)
          INICIO_ARRAY_ENTREGA[i] = ARRAY_ENTREGA[i]
        EndFor
   Else Array ARRAY_ENTREGA[1]
        ARRAY_ENTREGA[1] = "" 
        VSDGPARCELAS = ""
        
        Array INICIO_ARRAY_ENTREGA[1]
        INICIO_ARRAY_ENTREGA[1] = ""        
EndIf

While True
  INICIO_DIALOG=True
  
  ENCERRA      = False
  Result       = False
  VSDGDTENTREGA = BlankDate()
  VSDGFLAG     = ""
  VSDGPARCELAS = ""
  
  Switch
    Case ArraySize(ARRAY_ENTREGA)=1 And ARRAY_ENTREGA[1]="" : VSDGPARCELAS = ""  
    Case ArraySize(ARRAY_ENTREGA)=1 : VSDGPARCELAS = StrVal(ArraySize(ARRAY_ENTREGA))+" parcela"
    Case ArraySize(ARRAY_ENTREGA)>1 : VSDGPARCELAS = StrVal(ArraySize(ARRAY_ENTREGA))+" parcelas"
  EndSwitch
    
  Echo Normal
  Echo Off
  ShowDialog "Entrega" Proc "Sd_Dialog_ENTREGA"
  Trigger "OPEN","ARRIVE","CLOSE","SELECT"
  Key "F1","ENTER","ESC","F8",-66,-81,-82,-83,
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
       @ 06,10   Height 15 Width 37
  
      Label  @ 01,00 "Dt Entrega" For "TG_DTENTREGA"
      Accept @ 02,01 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTENTREGA" To VSDGDTENTREGA
      
      @ 02,18 ?? VSDGPARCELAS
      PaintCanvas Attribute 26 02, 18, 02,29
    
      Label @ 04,00 "Entrega" For "TG_ENTREGA"
      PickArray @05,01 Height 7 width 33
        Columns 1
         ARRAY_ENTREGA
          Tag "TG_ENTREGA"
           To VSDGCENTREGA   
           
                
  EndDialog
  If Not RetVal 
     Then QuitLoop 
     Else If ENCERRA
             Then QuitLoop
             Else Loop
          EndIf        
  EndIf
EndWhile      

EndProc ;Edita_Entrega()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(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_DESTINAT"      : Campo="TG_EMPRESA"
            Case Campo="TG_MARCA"         : Campo="TG_DESTINAT"
            Case Campo="TG_ESTADO"        : Campo="TG_MARCA"
            Case Campo="TG_CIDADE"        : Campo="TG_ESTADO"
            Case Campo="TG_DESTIN"        : Campo="TG_CIDADE"
						Case Campo="TG_OPDT"          : Campo="TG_DESTIN"
						Case Campo="TG_DTINI"         : Campo="TG_OPDT"
						Case Campo="TG_HRINI"         : Campo="TG_DTINI"
						Case Campo="TG_DTFIM"         : Campo="TG_HRINI"
						Case Campo="TG_HRFIM"         : Campo="TG_DTFIM"
            Case Campo="TG_SITUACAOPEDIDO"     : Campo="TG_HRFIM"
            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_DESTINAT"
                    Case Campo="TG_DESTINAT": Campo="TG_MARCA"
                    Case Campo="TG_MARCA"   : Campo="TG_ESTADO"
                    Case Campo="TG_ESTADO"  : Campo="TG_CIDADE" 
                    Case Campo="TG_CIDADE"  : Campo="TG_DESTIN"
                    Case Campo="TG_DESTIN"  : Campo="TG_OPDT"
                    Case Campo="TG_OPDT"    : Campo="TG_DTINI"
                         VSDGOPDT=ControlValue("TG_OPDT")
                         Switch
                           Case VSDGOPDT="E": VSDGDESCOPDT="DATA DE EMISSAO"
                           Case VSDGOPDT="I": VSDGDESCOPDT="DATA DE INCLUSAO"
                           Case VSDGOPDT="N": VSDGDESCOPDT="DATA DE ENTREGA"
                           OtherWise: Campo="TG_OPDT"
                         EndSwitch
                    Case Campo="TG_DTINI"   : Campo="TG_HRINI"
                    Case Campo="TG_HRINI"   : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"   : Campo="TG_HRFIM"
										Case Campo="TG_HRFIM"   : Campo="TG_SITUACAOPEDIDO"
                    Case Campo="TG_SITUACAOPEDIDO" : Campo="YES"
									  
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
	Case Campo="":
		 MSG_CAMPO=""
  Case Campo="TG_OPDT":
     MSG_CAMPO="Op‡„o: Emiss„o/Inclus„o/eNtrega "
  Case Campo="TG_OPCOES":
     MensagemCheckBoxes()   
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina Filtrar Registros                                                    *
;*******************************************************************************
Proc Selecao()
LimpAguarde()
Do_It!
ClearAll
Echo Normal
Echo Off

OP_SHOW="S"

VSDGEMPRESA        = ""
VSDGDESTINAT       = ""
VSDGMARCA          = ""
VSDGESTADO         = ""
VSDGCIDADE         = ""
VSDGDESTIN         = ""
VSDGOPDT           = ""           
VSDGDTINI          = BlankDate()
VSDGDTFIM          = BlankDate()
VSDGSITUACAOPEDIDO = ""

ShowDialog "Relacao de Pedidos p/ Desmembramento" Proc "SD_Dialog"
Trigger "OPEN","ARRIVE"
Key "F1","ENTER","ESC","TAB",
    -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
 @ 05,12	 Height 17 Width 72

  Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
  Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
  Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP
  
  Label  @ 02,00 "Pessoa"  For "TG_DESTINAT"
  Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT
  Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMCLI" To VSDGNOMDEST

  Label  @ 04,00 "Marca"  For "TG_MARCA"
  Accept @ 05,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
  Accept @ 05,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

  Label  @ 06,02 "Estado"  For "TG_ESTADO"
  Accept @ 07,03 Width 05 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO
  Accept @ 07,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMESTADO"  To VSDGNOMESTADO

  Label  @ 08,00 "Cidade"  For "TG_CIDADE"
  Accept @ 09,01 Width 33 "A20" Picture "!*!" Tag "TG_CIDADE"  To VSDGCIDADE

	Label  @ 10,00 "Destinacao"  For "TG_DESTIN"
  Accept @ 11,01 Width 06 "A3"  Picture "#*#" Tag "TG_DESTIN"    To VSDGDESTIN
  Accept @ 11,07 Width 25 "A30" Picture "!*!" Tag "TG_NOMDESTIN" To VSDGNOMDESTIN

	Label  @ 00,35 "Op‡äes de Datas" For "TG_OPDT"
	Accept @ 01,39 Width 04 "A1"  Picture "E,I,N" Tag "TG_OPDT" To VSDGOPDT
	Accept @ 01,44 Width 25 "A20"  Picture "!*!" Tag "TG_DESCOPDT" To VSDGDESCOPDT

  Label  @ 02,35 "Per¡odo Referente" For "TG_DTINI"
  Label  @ 03,39 " de" For "TG_DTINI"
  Accept @ 03,44 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
  Label  @ 03,57 "as" For "TG_DTINI"
  Accept @ 03,61 Width 08 "A5"  Picture "##:##" Tag "TG_HRINI" To VSDGHRINI
  Label  @ 04,39 "at‚" For "TG_DTFIM"
  Accept @ 04,44 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
  Label  @ 04,57 "as" For "TG_DTFIM"
  Accept @ 04,61 Width 08 "A5"  Picture "##:##" Tag "TG_HRFIM" To VSDGHRFIM

  Label  @ 06,35 "Situacao do Pedido"  For "TG_SITUACAOPEDIDO"
  Accept @ 07,36 Width 33 "A30"  Picture "ABERTO,SUSPENSO,CANCELADO,FATURADO,TODAS,!*!" Tag "TG_SITUACAOPEDIDO"  To VSDGSITUACAOPEDIDO

	Pushbutton @ 13,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
	Pushbutton @ 13,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

EndDialog

If RetVal
   Then LimpaRodape(0)
        Aguarde("Aguarde, Selecionando registros")
        ClearAll
        Seleciona2()
        
        If IsEmpty("Answer")
           Then Mensagem("N„o existem registros conforme sele‡„o !")
           Else View "DP_REL"
                Coedit "Answer"
                Scan
                  GetRecord "\\Sistemas\\Vendas\\PedidoC" [Answer->Numero do Pedido ] To REG_PEDIDO
                  If Not RetVal
                     Then Loop
                     Else If Search("PEDIDO DESMEMBRADO",Upper(REG_PEDIDO["Observacao do Pedido"]))>0
                             Then Loop
                          EndIf
                  EndIf
                  Moveto "DP_REL"
                  Moveto [Numero do Pedido]
                  Locate [Answer->Numero do Pedido]
                  If Not RetVal
                     Then ENTREGA = ""
                          End
                          SEQ=[Sequencia]
                          Down Down
                          [Sequencia         ]=SEQ+1
                          [Codigo da Empresa ]=[Answer->Codigo da Empresa]
                          [Numero do Pedido  ]=[Answer->Numero do Pedido ]
                          [Data de Emissao   ]=[Answer->Data de Emissao  ]
                          [Codigo            ]=[Answer->Codigo           ]
                          [Entrega           ]=""
                          [Numero de Parcelas]=BlankNum()
                          ;-----------------------------------------------------
                          UnLockRecord
                  EndIf        
                  Moveto "Answer"
                EndScan
                Do_It!
                ClearAll
                
                Regerar_Relacao()
        EndIf
EndIf
ClearAll
If IsTable("Answer")
   Then Delete "Answer"
EndIf

Monta_Tabela("")

CoEdit "DP_REL"
PickForm "F"

EndProc

;*******************************************************************************
;* Rotina p/ Montar Tabelas de Trabalho                                        *
;*******************************************************************************
Proc Monta_Tabela(PARAM)
Private AUX_SEQ 

Switch
  Case PARAM="" Or PARAM="EXCLUIR" : 
       If IsAssigned(DP_ITEM)      Then If IsTable(DP_ITEM)      Then Delete DP_ITEM      EndIf EndIf
       If IsAssigned(DP_GRUPO)     Then If IsTable(DP_GRUPO)     Then Delete DP_GRUPO     EndIf EndIf
       If IsAssigned(DP_COR)       Then If IsTable(DP_COR)       Then Delete DP_COR       EndIf EndIf
       If IsAssigned(TEMP_PEDIDOI) Then If IsTable(TEMP_PEDIDOI) Then Delete TEMP_PEDIDOI EndIf EndIf
       If IsAssigned(TEMP_PEDIDOG) Then If IsTable(TEMP_PEDIDOG) Then Delete TEMP_PEDIDOG EndIf EndIf
  Case PARAM="APAGAR" :        
       AUX_SEQ = [Sequencia]
       Do_it!
       If IsAssigned(DP_ITEM)      Then If IsTable(DP_ITEM)      Then Empty DP_ITEM      EndIf EndIf
       If IsAssigned(DP_GRUPO)     Then If IsTable(DP_GRUPO)     Then Empty DP_GRUPO     EndIf EndIf
       If IsAssigned(DP_COR)       Then If IsTable(DP_COR)       Then Empty DP_COR       EndIf EndIf
       If IsAssigned(TEMP_PEDIDOI) Then If IsTable(TEMP_PEDIDOI) Then Empty TEMP_PEDIDOI EndIf EndIf
       If IsAssigned(TEMP_PEDIDOG) Then If IsTable(TEMP_PEDIDOG) Then Empty TEMP_PEDIDOG EndIf EndIf
        Moveto "DP_REL"
        CoeditKey
        Moveto [Sequencia]
        Locate AUX_SEQ
        FormKey
EndSwitch

If PARAM="EXCLUIR" Or PARAM="APAGAR"
   Then Return
EndIf   

DP_ITEM=Cria_Temp(PrivDir())
Cria_Tabela(DP_ITEM,"Codigo da Marca(A3),"+
                    "Codigo do Grupo(A3),"+
                    "Codigo da Cor_Tecido(A4),"+
                    "Codigo do Item(A10),"+     
                    "Quantidade(N),"+
                    "Quantidade Processada(N)")

DP_GRUPO=Cria_Temp(PrivDir())                       
Cria_Tabela(DP_GRUPO,"Codigo do Grupo(A3),"+
                     "Quantidade(N),"+ 
                     "Quantidade Processada(N)")
               
DP_COR=Cria_Temp(PrivDir())                        
Cria_Tabela(DP_COR,"Codigo da Cor_Tecido(A4),"+
                   "Quantidade(N),"+
                   "Quantidade Processada(N)")
                   
TEMP_PEDIDOI =Cria_Temp(PrivDir()) 
Create TEMP_PEDIDOI Like "\\Base\\Sistemas\\Vendas\\PedidoI"

TEMP_PEDIDOG =Cria_Temp(PrivDir()) 
Copy "\\Base\\Sistemas\\Vendas\\PedidoG" TEMP_PEDIDOG
Empty TEMP_PEDIDOG 

View "\\Sistemas\\Vendas\\PedidoI"
View "\\Sistemas\\Vendas\\PedidoC"
View TEMP_PEDIDOG
View TEMP_PEDIDOI 
View DP_ITEM
View DP_GRUPO
View DP_COR
View "DP_EXEC"
View "PedidoG"
                   
EndProc ;Monta_Tabela()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
SYS_VALOR()

PARAM_COR_TECIDO="S"

Monta_Tabela("")

CoEdit "DP_REL"
PickForm "F"
While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
EndWhile
Do_It!
ClearAll

Monta_Tabela("EXCLUIR")

Release Vars All
Release Procs All
