;** PED_GERA *******************************************************************
;*  Ajusta cores para itens sortidos/agrupados                                 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 06/01/2015 por Bruno Carvalho
;Ultima Alteracao: 24/03/2015 por Bruno Carvalho
;Motivo Alteracao: Alterado a forma de visualiza‡Æo em PDF, nÆo sendo mais opccional e sim obrigat¢rio                  
;Ultima Alteracao: 31/03/2015 por Bruno Carvalho
;Motivo Alteracao: Adiciona PARAM_INATIVO para verifica‡Æo de referˆncia/cor com cadastro inativo ou c/ produ‡Æo esgostada
;Ultima Alteracao: 06/04/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado na proc Seleciona_Pedidos() p/ n„o pegar pedidos faturados 
;Ultima Alteracao: 04/05/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0222# onde foi add PARAM_PEDIDO_ORIGINAL
;Ultima Alteracao: 11/05/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes na proc Monta_Pedidos_S() onde foi recolocada a variavel PROXIMA_COR
;Ultima Alteracao: 11/05/2015 por Bruno Carvalho
;Motivo Alteracao: Se h  itens com ocorrˆncia de erros no AGRUPAMENTO, bloquear o pedido -> PARAM_BLOQUEIA_PEDIDO 
;Ultima Alteracao: 11/05/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ gravar em INI a proxima cor a ser utilizada no item do pedido (SORTIDOS)
;Ultima Alteracao: 20/05/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ gera‡Æo do PedidoI
;Ultima Alteracao: 22/05/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado #0232# p/ executar rotinas do pedido sortido
;Ultima Alteracao: 28/05/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustado "Sequencia do Item" para mais digitos no Array SORT_SEMCOR_AUX
;Ultima Alteracao: 11/06/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes para PROXIMA_COR onde foi criado uma tabela para armazenar a proxima cor da referencia 
;Ultima Alteracao: 11/06/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo F5 com op‡Æo de filtro dentro do FORM
;Ultima Alteracao: 16/06/2015 por Bruno Carvalho
;Motivo Alteracao: Ajutes #0222#
;Ultima Alteracao: 17/06/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustado p/ inserir pedidos pelo FORM, removido "F5"
;Ultima Alteracao: 23/06/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado rotina p/ armazenar em tabela "PedidoGT" registros originais de pedidos de grade
;Ultima Alteracao: 23/06/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado rotina p/ reversÆo de pedidos sortidos desmembrados - Play do PED_AC 
;Ultima Alteracao: 24/06/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado rotina p/ identificar qual o item fez parte do desmembramento SORTIDO pelo campo [Composicao de Dias]
;Ultima Alteracao: 01/07/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado a REGRA_SEMSORT_ITEMCOMCOR p/ #0232#
;Ultima Alteracao: 21/07/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado FORCAR_SORTIDO para quando todos os itens estiverem com cores, sortir aleatoriamente #REGRA_SEMSORT_ITEMCOMCOR#
;Ultima Alteracao: 24/07/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustado rotina ao desmembrar pedidos sortidos onde itens de mesma referˆncia nÆo estavam agrupando
;Ultima Alteracao: 17/06/2016 por Bruno Carvalho 
;Motivo Alteracao: Adaptado processo para gera‡Æo do [Numero do Lancamento] "Interno"
;Ultima Alteracao: 05/07/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes para pegar "Producao Esgotada" da tabela Iten_Com
;Ultima Alteracao: 12/07/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado Op‡”es de Datas -> #Sol. 23577#     
;Ultima Alteracao: 29/09/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0388# -> PegaCodigoRaiz()
;Ultima Alteracao: 03/12/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0390# -> PegaCodigoRaiz()
;Ultima Alteracao: 13/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 14/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 27/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons()
;Ultima Alteracao: 07/04/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0396# -> PegaCodigoRaiz() 
;Ultima Alteracao: 16/05/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes conforme IMPWCSN no campo [Preco Total] da 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() -> Edita Descricao do Item, Valor IPI por Unidade, Condicao de Pagamento, Codigo da Marca
;Ultima Alteracao: 19/10/2017 por Bruno Carvalho
;Motivo Alteracao: Alterado campo que identifica qual o item fez parte do desmembramento SORTIDO -> De [Composicao de Dias] p/ [ItemSortido]
;Ultima Alteracao: 31/10/2017 por Bruno Carvalho
;Motivo Alteracao: Removido de Grava_PedidoI() -> Empresa Atendimento
;Ultima Alteracao: 11/09/2018 por Bruno Carvalho
;Motivo Alteracao: Comentados campos que foram removidos da tabela PEDIDOI/PEDIDOG
;Ultima Alteracao: 28/12/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Adicionado processos de #0427#
;Ultima Alteracao: 15/01/2019 por Bruno Carvalho                          
;Motivo Alteracao: Ajuste ao localizar pelo indice o item pela referencia e cor, permitindo localizar al‚m de "P", produtos "T" na proc Monta_Pedidos_S()
;Ultima Alteracao: 12/02/2019 por Bruno Carvalho                          
;Motivo Alteracao: Adicionado processo p/ #0425# 
;Ultima Alteracao: 08/03/2019 por Bruno Carvalho                          
;Motivo Alteracao: Adicionado processo para criar um novo pedido para itens da familia 200 quando houver
;Ultima Alteracao: 18/03/2019 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")
;Ultima Alteracao: 02/07/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado [Producao Esgotada] da tabela "Iten_Com" p/ a tabela "Itens"
;Ultima Alteracao: 05/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado processos de #0388# para #0444#
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 06/05/2020 por Bruno Carvalho
;Motivo Alteracao: Alterado Monta_Array_Grade() p/ Monta_Grade() *Manter particularidades
;Ultima Alteracao: 30/07/2021 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes op‡Æo de datas               

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
  Moveto [Sequencia]
  End
  CODIGO=[Sequencia]
  Down
  CODIGO=CODIGO+1
  [Sequencia]=CODIGO
                                 
  SetaCorRegistro("Editar")
  While True
  TECLA = ""
  AguardaTeclasPadrao()
  
  If Retval=-33
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
           "~F6~ Processa             " : " Realiza o Processo de Pedido c/ Itens Sortidos " : "F6",
           Separator,
           "~C~ancelar                " : " Cancelar a Opera‡„o                            " : "CANCELAR"
         EndMenu                                                    
         To MenuVar
         Echo Off
         
         If MenuVar="CANCELAR" or MenuVar="Esc"
            Then Loop
            Else RetVal = MenuVar
         EndIf  
  EndIf
  
  Switch
      Case RetVal="F3": SemFicha()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F6" :
           If IsEmpty(TabelaRP)
              Then Mensagem("N„o existem registros a processar !")
              Else Del
                   Switch
                     Case PARAM_DESMEMBRAMENTO = "A" : Monta_Pedidos_R()
                     Case PARAM_DESMEMBRAMENTO = "S" : Monta_Pedidos_S()
                   EndSwitch
                   CHAVE=9
                   Return
           EndIf
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME" And Field()="Sequencia":
           While True
             PAGINA(TabelaRP,"MR")
             If EDITAR="S"
                Then Mensagem("N„o ‚ poss¡vel a edi‡„o !")
                Else If EXCLUIR="S"
                        Then If QuerExcluir("")
                                Then Del
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop   
      Case Retval="ESC": 
           Del
           ConfGeral("Deseja realmente sair da rela‡„o dos pedidos ?")
           If OK<>"S"
              Then QuitLoop   
           EndIf   
           CHAVE=9
           Return
      Case Retval="ENTER":     
           If IsBlank([]) Then Loop EndIf
           CODIGO=[]
           Del
           Locate CODIGO
           If Retval
              Then CHAVE=0
              Else CHAVE=1
                   End Down
                   [Sequencia]=CODIGO
           EndIf
           If IsLockRecord()
              Then QuitLoop
              Else Return
           EndIf
      EndSwitch
  EndWhile
EndWhile

EndProc ;CHAVE()
                      
;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITAC()

Moveto [Numero do Pedido]
While True
  TECLA=" Esc=Retornar  "
  If CHAVE=0 Then TECLA=TECLA+"Del=Excluir  " EndIf
  If Field()=[Numero do Pedido] 
     Then TECLA=TECLA+"F1=Tabelas  "
  EndIf

  Prompt TECLA

  Wait Field
       Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1"

  Switch
  Case Retval="F1":
       If Field()="Numero do Pedido" 
          Then CONSULTAF1()
       EndIf
  Case Retval="ESC":
       Switch
         Case Field()="Numero do Pedido":
               If QuerDesfazer("")
                  Then If CHAVE=1
                          Then Del
                          Else Undo
                       EndIf
                       CHAVE=9
                       QuitLoop
               Endif
         OtherWise: Left
       EndSwitch
  Case Retval="ENTER":
       Switch
         Case Field()="Numero do Pedido" :
              If IsBlank([])                                    
                 Then Loop
                 Else ACHOU = False
                      SEQ = [Sequencia]
                      PED = [Numero do Pedido]
                      Home
                      Moveto [Numero do Pedido]
                      Locate PED
                      If RetVal   
                         Then While PED = [Numero do Pedido]
                                If SEQ<>[Sequencia] 
                                   Then Mensagem("O Pedido "+PED+" esta localizado na sequˆncia "+StrVal([Sequencia])+" !")
                                        ACHOU = True
                                        QuitLoop 
                                EndIf
                                Skip
                                If Eot() Then QuitLoop EndIf
                                Locate Next PED
                                If Not RetVal Then QuitLoop EndIf
                              EndWhile   
                      EndIf   
                      Moveto [Sequencia]
                      Locate SEQ
                      If ACHOU
                         Then Moveto [Numero do Pedido]
                              Loop
                         Else FormKey
                              MSG = ""
                              If PARAM_DESMEMBRAMENTO="S"
                                 Then ;---- Pedido Sortido ---------------------
                                      ACHOU = False
                                      GetRecord "\\Sistemas\\Vendas\\PedidoC" PED To REG_PEDIDO
                                      If RetVal
                                         Then If VSDGREPRESEN<>""
                                                 Then If REG_PEDIDO["Codigo do Representante"]<>VSDGREPRESEN
                                                         Then Mensagem("Pedido "+PED+" n„o pertence ao representante informado na sele‡„o !")
                                                              Moveto TabelaRP
                                                              PickForm "F"
                                                              Moveto [Numero do Pedido]
                                                              Loop
                                                      EndIf     
                                              EndIf
                                              If Search ("SORTIDO DESMEMBRADO",REG_PEDIDO["Observacao do Pedido"])>0
                                                 Then Mensagem("Pedido "+PED+" j  foi desmembrado anteriormente !")
                                                      Moveto TabelaRP
                                                      PickForm "F"
                                                      Moveto [Numero do Pedido]
                                                      Loop
                                              EndIf                                              
                                              If REG_PEDIDO["Situacao do Pedido"]<>"SUSPENSO" And REG_PEDIDO["Situacao do Pedido"]<>"ABERTO"
                                                 Then Mensagem("Pedido "+PED+" com a situa‡„o "+REG_PEDIDO["Situacao do Pedido"])
                                                      Moveto TabelaRP
                                                      PickForm "F"
                                                      Moveto [Numero do Pedido]
                                                      Loop
                                              EndIf
                                      EndIf
                                      Moveto "\\Sistemas\\Vendas\\PedidoI"
                                      Moveto [Numero do Pedido]
                                      Locate PED
                                      If RetVal
                                         Then While PED = [Numero do Pedido]
                                                If Search("SORT",[Descricao do Item])>0
                                                   Then ACHOU = True
                                                        QuitLoop
                                                EndIf           
                                                Skip
                                                If Eot() Then QuitLoop EndIf
                                              EndWhile
                                         Else MSG="N„o foi localizado itens no pedido "+PED+" !" 
                                      EndIf   
                                      Moveto TabelaRP
                                      PickForm "F"
                                      If ACHOU
                                         Then QuitLoop
                                         Else If MSG <> ""
                                                 Then Mensagem(MSG)
                                                 Else Mensagem("N„o h  itens SORTIDOS no pedido "+PED+" !")
                                              EndIf                                   
                                              Moveto [Numero do Pedido]
                                              Loop
                                      EndIf
                                 Else ;---- Pedido Agrupado --------------------
                                      GetRecord "\\Sistemas\\Vendas\\PedidoC" PED To REG_PEDIDO                           
                                      If RetVal
                                         Then If VSDGREPRESEN<>""
                                                 Then If REG_PEDIDO["Codigo do Representante"]<>VSDGREPRESEN
                                                         Then Mensagem("Pedido "+PED+" n„o pertence ao representante informado na sele‡„o !")
                                                              Moveto TabelaRP
                                                              PickForm "F"
                                                              Moveto [Numero do Pedido]
                                                              Loop
                                                      EndIf     
                                              EndIf
                                              If Search ("PEDIDO DESMEMBRADO PELO AGRUPAMENTO",REG_PEDIDO["Observacao do Pedido"])>0
                                                 Then Mensagem("Pedido "+PED+" j  foi desmembrado anteriormente !")
                                                      Moveto TabelaRP
                                                      PickForm "F"
                                                      Moveto [Numero do Pedido]
                                                      Loop
                                              EndIf       
                                              If Search ("PEDIDO DESMEMBRADO DO PEDIDO",REG_PEDIDO["Observacao do Pedido"])>0
                                                 Then Mensagem("Pedido "+PED+" j  fez parte do desmembramento em processos anteriores !")
                                                      Moveto TabelaRP
                                                      PickForm "F"
                                                      Moveto [Numero do Pedido]
                                                      Loop
                                              EndIf  
                                              If REG_PEDIDO["Situacao do Pedido"]<>"SUSPENSO" And REG_PEDIDO["Situacao do Pedido"]<>"ABERTO"
                                                 Then Mensagem("Pedido "+PED+" com a situa‡„o "+REG_PEDIDO["Situacao do Pedido"])
                                                      Moveto TabelaRP
                                                      PickForm "F"
                                                      Moveto [Numero do Pedido]
                                                      Loop
                                              EndIf                                          
                                      EndIf
                                      ACHOU_ITEM = False
                                      Moveto "\\Sistemas\\Vendas\\PedidoI"
                                      Moveto [Numero do Pedido]
                                      Locate PED
                                      If RetVal
                                         Then While PED = [Numero do Pedido]
                                                COD_ITEM = PegaCodigoRaiz([Codigo do Item])
                                                GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM
                                                If RetVal
                                                   Then COR_DESC = REG_ITEM["Descricao da Cor_Tecido"]  
                                                        Moveto "\\Sistemas\\Vendas\\Ped_regi"  
                                                        Moveto [Codigo do Item]
                                                        Locate COD_ITEM
                                                        If RetVal                                 
                                                           Then While [Codigo do Item] = COD_ITEM
                                                                  If [Descricao Cor_Tecido] = COR_DESC And [Codigo_Regra] = PARAM_REGRA
                                                                     Then ACHOU_ITEM = True
                                                                          QuitLoop
                                                                  EndIf
                                                                  Skip
                                                                  If Eot() Then QuitLoop EndIf
                                                                  Locate Next COD_ITEM
                                                                  If Not RetVal
                                                                     Then QuitLoop
                                                                  EndIf   
                                                                EndWhile     
                                                                          
                                                        EndIf     
                                                EndIf        
                                                If ACHOU_ITEM Then QuitLoop EndIf       
                                                Moveto "\\Sistemas\\Vendas\\PedidoI"    
                                                Skip
                                                If Eot() Then QuitLoop EndIf
                                              EndWhile
                                         Else MSG="N„o foi localizado itens no pedido "+PED+" !" 
                                      EndIf   
                                      Moveto TabelaRP
                                      PickForm "F"
                                      If ACHOU_ITEM
                                         Then QuitLoop
                                         Else If MSG <> ""
                                                 Then Mensagem(MSG)
                                                 Else Mensagem("N„o h  itens AGRUPADOS conforme a regra "+StrVal(PARAM_REGRA)+" !")
                                              EndIf                                   
                                              Moveto [Numero do Pedido]
                                              Loop
                                      EndIf           
                            EndIf
                      EndIf
              EndIf
       EndSwitch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  EndSwitch
EndWhile
EndProc

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

;*******************************************************************************
;* Rotina retorna campos do tamnaho no codigo do item                          *
;*******************************************************************************
Proc PegaCampoCor(s)
Private s,ns

ns="0"
Switch 
  Case SYS_CLIENTE_CONFEC="0185" Or
       SYS_CLIENTE_CONFEC="0195" Or
       SYS_CLIENTE_CONFEC="0196"  :
       ns=SubStr(s,8,2)

  Case SYS_CLIENTE_CONFEC="0171"  : 
       ns=SubStr(s,7,2)

  Case SYS_CODIGO_CLIENTE="0003"  :   
       ns=SubStr(s,7,2)

  Case SYS_CLIENTE_CONFEC="0222"  :
       ns=SubStr(s,7,2)
       
  Case SYS_CODIGO_CLIENTE="0425"  :
       ns=SubStr(s,7,2)
       
  Case SYS_CODIGO_CLIENTE="0239"  :
       ns=Substr(s,7,2)
       
  Case SYS_CODIGO_CLIENTE="0388" Or 
       SYS_CODIGO_CLIENTE="0427" Or
       SYS_CODIGO_CLIENTE="0390" Or
       SYS_CODIGO_CLIENTE="0396" Or
       SYS_CODIGO_CLIENTE="0444" :
       ns=Substr(s,7,4)     

  Case SYS_CLIENTE_CONFEC="0079"  :
       ns=SubStr(s,7,2)
       
 ;--- ? NÆo Possui Cor ? ----------      
 ;Case SYS_CLIENTE_CONFEC="0200" Or    
 ;     SYS_CLIENTE_CONFEC="0204" Or
 ;     SYS_CODIGO_CLIENTE="0322"  :
 ;     ns=SubStr(s,7,2)
EndSwitch

Return ns
Endproc

;*******************************************************************************
;* Seleciona Pedidos para gera‡Æo de pedidos conforme itens sortidos           *
;*******************************************************************************
Proc Seleciona_Pedidos(PARAM)
Private PARAM
ClearAll
                
Empty TabelaRP

{Ask} {\\Sistemas\\Vendas\\PedidoC} 
Moveto [Numero do Pedido       ] Check TypeIn "_Ped"
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
If VSDGOPDT="1"
   Then Moveto [Data de Emissao] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
   Else Moveto [Data_Inclusao  ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
EndIf   
Moveto [Situacao do Pedido     ]
Switch
  Case VSDGFINAL=1 : TypeIn "SUSPENSO"
  Case VSDGFINAL=2 : TypeIn "ABERTO"
  OtherWise        : TypeIn "SUSPENSO Or ABERTO"
EndSwitch
Moveto [Observacao do Pedido   ] Check
{Ask} {\\Sistemas\\Vendas\\PedidoG}
Moveto [Numero do Pedido       ] TypeIn "_Ped"
If PARAM="S"
   Then Moveto [Descricao do Item] TypeIn "..SORT.."
EndIf   
Moveto [Quantidade Faturada    ] TypeIn "<=0"
Do_It!
ClearAll

Switch
  Case PARAM = "A" :     
       Coedit "Answer"
       While True
         Moveto [Observacao do Pedido]
         Locate Pattern "..PEDIDO DESMEMBRADO.."
         If RetVal
            Then Del                          
         EndIf
         Locate Next Pattern "..PEDIDO DESMEMBRADO.."
         If Not RetVal Then QuitLoop EndIf
       EndWhile
       Do_It!
       ClearAll
  Case PARAM = "S" :     
       Coedit "Answer"
       While True
         Moveto [Observacao do Pedido]
         Locate Pattern "..SORTIDO DESMEMBRADO.."
         If RetVal
            Then Del
         EndIf
         Locate Next Pattern "..SORTIDO DESMEMBRADO.."
         If Not RetVal Then QuitLoop EndIf
       EndWhile
       Do_It!
       ClearAll     
EndSwitch   

If Not IsEmpty("Answer")
   Then FAZ_PEDIDO = False
        Tabela=Cria_Temp(PrivDir())
        NR = NRecords("Answer")
        Copy "Answer" Tabela        
      
        ;H  uma tabela que ‚ o espelho da outra apenas para controle de pedidos, 
        ;caso nÆo tenha ser  excluido e assim a outra tabela ‚ realizado o SCAN.

        If PARAM="S"
           Then NR = NRecords("Answer")
                
                Copy "Answer" Tabela
                View "\\Sistemas\\Vendas\\PedidoG"
                View Tabela
                Coedit "Answer"
                Scan
                  Barra(NR, RecNo())
                  Aguarde("Aguarde, verificando itens sortidos "+BARRA_STRING)
         
                  PEDIDO  = [Numero do Pedido]
                  SORTIDO = False    
                  
                  Moveto "\\Sistemas\\Vendas\\PedidoG"
                  Moveto [Numero do Pedido]
                  Locate PEDIDO
                  If RetVal 
                     Then While [Numero do Pedido] = PEDIDO 
                            ;----- Para PedidoI --------------------------------
                            ;COR = NumVal(PegaCampoCor([Codigo do Item]))
                            ;POS = Search("SORT",Upper([Descricao do Item])) 
                            ;
                            ;If COR = 9 And POS > 0
                            ;   Then SORTIDO = True 
                            ;        QuitLoop
                            ;EndIf
                            
                            ;---- Para PedigoG ---------------------------------- 
                            If Upper((SubStr([Descricao do Item],24,4))) = "SORT"
                               Then SORTIDO = True 
                                    QuitLoop
                            EndIf        
                            
                            Skip
                            If Eot() Then QuitLoop EndIf
                          EndWhile
                  EndIf
                  
                  If Not SORTIDO
                     Then Moveto Tabela
                          Moveto [Numero do Pedido]
                          Locate PEDIDO
                          If RetVal
                             Then Del
                          EndIf
                  EndIf   
                  
                  Moveto "Answer"
                EndScan  
                Do_It!
                ClearAll
                
                Rename Tabela "Answer"
                
           Else CONT_GRUPO = 0
                DynArray COD_GRUPO[]
                
                View "\\Sistemas\\Vendas\\Ped_regi"
                View "\\Sistemas\\Vendas\\PedidoG"
                View Tabela
                Coedit "Answer"
                Scan
                  Barra(NR, RecNo())
                  Aguarde("Aguarde, verificando itens sortidos "+BARRA_STRING)
         
                  PEDIDO     = [Numero do Pedido]
                  FAZ_PEDIDO = False
                  Moveto "\\Sistemas\\Vendas\\PedidoG"
                  Moveto [Numero do Pedido]
                  Locate PEDIDO
                  If RetVal 
                     Then While [Numero do Pedido] = PEDIDO 
                            COD_ITEM = PegaCodigoRaiz([Codigo do Item])
                            COR_DESC = [Descricao da Cor_Tecido]
                            
                            Moveto "\\Sistemas\\Vendas\\Ped_regi"
                            Moveto [Codigo do Item]
                            Locate COD_ITEM
                            If RetVal 
                               Then ACHOU_ITEM = False
                                    While [Codigo do Item] = COD_ITEM
                                      If [Descricao Cor_Tecido] = COR_DESC And
                                         [Codigo_Regra] = PARAM_REGRA
                                         Then If Not FAZ_PEDIDO
                                                 Then FAZ_PEDIDO = True
                                              EndIf   
                                              ACHOU_ITEM = True
                                              QuitLoop
                                      EndIf
                                      Skip
                                      If Eot() Then QuitLoop EndIf
                                      Locate Next COD_ITEM
                                      If Not RetVal
                                         Then QuitLoop
                                      EndIf   
                                    EndWhile
                                    CONT_GRUPO = CONT_GRUPO + 1
                                    If Not ACHOU_ITEM
                                       Then COD_GRUPO[CONT_GRUPO] = Format("W6,AL",PEDIDO) + Format("W8,AL",[\Sistemas\Vendas\Pedidog->Referencia]) +
                                                            Spaces(5) + Format("W10,AL",COD_ITEM) + Format("W20,AL",COR_DESC)+ 
                                                            Format("W30,AL",[\Sistemas\Vendas\Pedidog->Descricao do Item])
                                       Else COD_GRUPO[CONT_GRUPO] = Format("W6,AL",PEDIDO) + Format("W8,AL",[Referencia]) + AlinhM(StrVal([Codigo_Grupo]),5) + 
                                                            Format("W10,AL",[Codigo do Item]) + Format("W20,AL",COR_DESC)+ Format("W30,AL",[Descricao do Item])                 
                                    EndIf                   
                            EndIf
                            
                            Moveto "\\Sistemas\\Vendas\\PedidoG"
                            Skip
                            If Eot() Then QuitLoop EndIf
                          EndWhile
                  EndIf
                  
                  If Not FAZ_PEDIDO
                     Then Moveto Tabela
                          Moveto [Numero do Pedido]
                          Locate PEDIDO
                          If RetVal
                             Then Del
                          EndIf
                  EndIf   
                  
                  Moveto "Answer"
                EndScan  
                Do_It!
                ClearAll
                
                Rename Tabela "Answer"
                View "\\Sistemas\\Vendas\\Ped_regi"
                
                FAZ_PEDIDO = False
                If IsAssigned(COD_GRUPO)
                    Then If DynArraySize(COD_GRUPO) > 0
                            Then FAZ_PEDIDO = True
                         EndIF    
                EndIf   
        EndIf
        
        SEQ = 0
        NR = NRecords("Answer")
        
        View TabelaRP       
        CoEdit "Answer"
        Scan
          Barra(NR, RecNo())
          Aguarde("Aguarde, ajustando sequˆncia do item "+BARRA_STRING)
          
          GetRecord "\\Sistemas\\Vendas\\PedidoC"  [Answer->Numero do Pedido] To REG_PEDIDOC
          If RetVal
             Then Moveto TabelaRP
                  End Down
                  SEQ = SEQ + 1
                  [Sequencia             ] = SEQ
                  [Numero do Pedido      ] = [Answer->Numero do Pedido           ]       
                  [Nome Fantasia Empresa ] = REG_PEDIDOC["Nome Fantasia Empresa" ]   
                  [Data de Emissao       ] = REG_PEDIDOC["Data de Emissao"       ]         
                  [Codigo                ] = REG_PEDIDOC["Codigo"                ]                 
                  [Nome Fantasia EmitDest] = REG_PEDIDOC["Nome Fantasia EmitDest"]  
                  [Data de Entrega       ] = REG_PEDIDOC["Data de Entrega"       ]        
                  [Codigo da Empresa     ] = REG_PEDIDOC["Codigo da Empresa"     ]       
                  UnLockRecord
                  SaveTables
          EndIf
          
          Moveto "Answer"
        EndScan
        Do_it!
        ClearAll 
        
        If PARAM="S"
           Then MSG = "N„o h  sele‡„o de cores p/ itens sortidos da rela‡„o de pedidos !"
           Else MSG = "N„o h  agrupamento para os itens dos pedidos selecionados !"
        EndIf   
        
        If IsEmpty("Answer")
           Then Return False
        EndIf   
  Else Return False       
EndIf

Return True

EndProc ;Seleciona_Pedidos()

;*******************************************************************************
;* Rotina p/ Copiar Arquivos                                                   *
;*******************************************************************************
Proc Copia_Sort_Agrup(PARAM)
Private PARAM,ARQ,PASTA,ARQ_PDF

If PARAM_DESMEMBRAMENTO="S" 
   Then ARQ_PDF = "PEDSORT.TXT.PDF"
   Else ARQ_PDF = "PEDAGRUP.TXT.PDF"
EndIf     
  
If PARAM="Analise"
   Then ARQ = "O"
        PASTA = PASTA_A      
   Else ARQ = "D"
        PASTA = PASTA_B
EndIf        

Run NoRefresh "c:\\vise\\Vdpr.exe /FILE'"+PASTA+"' /PDF "+ARQIMP

cmd="REN "+PASTA+"\\"+ARQ_PDF+" "+PASTA+"\\"+ARQ+"."+SubStr(DIA,1,4)+SubStr(DIA,7,2)+"."+HORA+".pdf"+""
ExecVise(cmd)
Sleep 1000  

EndProc ;Copia_Sort_Agrup()

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

Release Vars Array_TM
Array Array_TM[12]
grdant="***"
Seq=0  

Moveto "\\Sistemas\\Vendas\\PedidoG"
Moveto [Numero do Pedido]
Locate PEDIDO
Scan For [Numero do Pedido] = PEDIDO
  Aguarde("Aguarde, Convertendo pedido "+PEDIDO+" p/ modo padr„o...")
  CopyToArray RegPed

	Array_Monta_Grade("")

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

    Switch
      Case i=1 : Qtd=RegPed["Qtd1"]  QtdF=RegPed["QtdF1"]  
      Case i=2 : Qtd=RegPed["Qtd2"]  QtdF=RegPed["QtdF2"]  
      Case i=3 : Qtd=RegPed["Qtd3"]  QtdF=RegPed["QtdF3"]  
      Case i=4 : Qtd=RegPed["Qtd4"]  QtdF=RegPed["QtdF4"]  
      Case i=5 : Qtd=RegPed["Qtd5"]  QtdF=RegPed["QtdF5"]  
      Case i=6 : Qtd=RegPed["Qtd6"]  QtdF=RegPed["QtdF6"]  
      Case i=7 : Qtd=RegPed["Qtd7"]  QtdF=RegPed["QtdF7"]  
      Case i=8 : Qtd=RegPed["Qtd8"]  QtdF=RegPed["QtdF8"]  
      Case i=9 : Qtd=RegPed["Qtd9"]  QtdF=RegPed["QtdF9"]  
      Case i=10: Qtd=RegPed["Qtd10"] QtdF=RegPed["QtdF10"] 
      Case i=11: Qtd=RegPed["Qtd11"] QtdF=RegPed["QtdF11"] 
      Case i=12: Qtd=RegPed["Qtd12"] QtdF=RegPed["QtdF12"] 
    EndSwitch
    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
    
    Moveto "\\Sistemas\\Vendas\\PedidoI"
    End Down
    Seq=Seq+1
    [Numero do Pedido         ]=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"]
    [Taxa Desconto Unitario   ]=RegPed["Taxa Desconto Unitario"]
    [Valor Desconto Unitario  ]=RegPed["Valor Desconto Unitario"]
    [Preco Total              ]=[Quantidade]*([Preco Unitario]-[Valor Desconto Unitario])
    [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"]
    [ItemSortido              ]=RegPed["ItemSortido"]
    If [ItemSortido]="S"
       Then OBS_SORT="[S]"
            If [Observacao_Item]<>""
              Then [Observacao_Item] = [Observacao_Item] + " " + OBS_SORT
              Else [Observacao_Item] = OBS_SORT
            EndIf            
    EndIf
    [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

    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 "\\Sistemas\\Vendas\\PedidoG"
EndScan

EndProc ;Gera_PedidoI() 
                             
;*******************************************************************************
;* Rotina p/ Imprimir Cabe‡alho                                                *
;*******************************************************************************
Proc Cabecalho_R(PARAM)

If Not IsAssigned(DESC_REGRA)
   Then GetRecord "\\Sistemas\\Vendas\\Ped_regc" PARAM_REGRA To REG_PEDC
        If ReTval
           Then DESC_REGRA = REG_PEDC["Descricao_Regra"]
           Else DESC_REGRA = ""
        EndIf
EndIf

Print File ARQIMP Chr(27)+Chr(77)
Print File ARQIMP Chr(27)+Chr(48)
Print File ARQIMP "\n\n"
Print File ARQIMP Fill("-",94)+"\n"
Switch
  Case PARAM = "Originais" : 
  TITULO = "RELACAO DOS PEDIDOS QUE CONTEM ITENS NO AGRUPAMENTO "+Rtrim(StrVal(PARAM_REGRA))+" "+Upper(Rtrim(DESC_REGRA))  
  OtherWise                : 
  TITULO = "RELACAO DOS PEDIDOS DESMEMBRADO DE ACORDO COM O AGRUPAMENTO "+Rtrim(StrVal(PARAM_REGRA))+" "+Upper(Rtrim(DESC_REGRA))
EndSwitch
Print File ARQIMP Format("W94,AC",TITULO)+"\n"
Print File ARQIMP Fill("-",94)+"\n"
Print File ARQIMP "\n"

Switch
  Case PARAM = "Originais" :  NLINHA = 10
                              Print File ARQIMP "Pedido Cliente                        Dt Emissao Situacao Item nao localizado                "+"\n"
                              Print File ARQIMP "------ ------------------------------ ---------- -------- -----------------------------------"+"\n"
                              Print File ARQIMP "Empresa: "+VSDGEMPRESA+" "+VSDGNOMEMP+"\n\n"
  OtherWise                :  NLINHA = 11
                              Print File ARQIMP "Pedido                                                     Pedido                            "+"\n"
                              Print File ARQIMP "Origem Cliente                         Dt Emissao Situacao Desmembrado Dt Entrega Agrup Grupo"+"\n"
                              Print File ARQIMP "------ ------------------------------- ---------- -------- ----------- ---------- ----- -----"+"\n"    
                              Print File ARQIMP "Empresa: "+VSDGEMPRESA+" "+VSDGNOMEMP+"\n\n"    
EndSwitch

EndProc ;Cabecalho_R()

;*******************************************************************************
;* Rotina p/ Montar Pedidos                                                    *
;*******************************************************************************
Proc Monta_Pedidos_R()
Private GRP,AUX_GRUPO 

Do_It!
ClearAll

OLD_EMPR = "***"
OLD_DEST = "***"       
                                 
TabelaG = Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Vendas\\PedidoG" TabelaG
ClearAll

{Ask} {\\Sistemas\\Vendas\\Ped_regi}
Moveto [Codigo_Regra        ] TypeIn "~PARAM_REGRA"
Moveto [Sequencia do Item   ] Check
Moveto [Descricao Cor_Tecido] Check
Moveto [Referencia          ] Check
Do_it! 
ClearAll

View "Answer"
Moveto [Sequencia do Item] NR = ImageCCount()
ClearAll
      
Cont_Grp = 0
DynArray OLD_GRP[]

CONT_FAMILIA_200 = 0
CONT_OLD_ITEM    = 0

DynArray FAMILIA_200[]
DynArray OLD_ITEM[]
   
View "\\Sistemas\\Vendas\\Ped_regi"
View "\\Sistemas\\Vendas\\PedidoC"
View "\\Sistemas\\Vendas\\PedidoG"
View TabelaG
Coedit TabelaRP
Scan
   Barra(NR, RecNo())
   Aguarde("Aguarde, ajustando os itens do Agrupamento "+StrVal(PARAM_REGRA)+BARRA_STRING)
   
   PEDIDO     = [Numero do Pedido]
   SEQ_ITEM   = 0
   
   GetRecord "\\Sistemas\\Vendas\\PedidoC" PEDIDO To REG_PEDIDOC 
                                         
   Moveto "\\Sistemas\\Vendas\\PedidoG"
   Moveto [Numero do Pedido]
   Locate PEDIDO
   If RetVal     
      Then While PEDIDO = [Numero do Pedido]
             OLD_SEQ_ITEM     = [Item do Pedido]
             COD_GRUP         = BlankNum()
             COR_TECIDO       = [Descricao da Cor_Tecido]
             VSD_I_REFERENCIA = [Referencia]
             
             ACHOU_ITEM = False             
             Moveto "\\Sistemas\\Vendas\\Ped_regi"
             Moveto [Referencia]
             Locate VSD_I_REFERENCIA
             If Retval
                Then While VSD_I_REFERENCIA = [Referencia]
                       If COR_TECIDO = [Descricao Cor_Tecido] And
                          PARAM_REGRA = [Codigo_Regra] 
                          Then ACHOU_ITEM = True
                               COD_GRUP   = [Codigo_Grupo]
                               Moveto "\\Sistemas\\Vendas\\PedidoG"
                               CopyToArray REG_ITEM
                               CopyToArray REG_ITEM_TEMP
                               QuitLoop 
                       EndIf   
                       Skip
                       If Eot() Then QuitLoop EndIf
                       Locate Next VSD_I_REFERENCIA
                       If Not RetVal 
                          Then QuitLoop
                       EndIf   
                     EndWhile
             EndIf   
                    
             FAMILIA200 = ""          
             If ACHOU_ITEM 
                Then GetRecord "\\Sistemas\\Estoque\\Itens" REG_ITEM["Codigo do Item"] To ITEM
                     If RetVal
                        Then REG_ITEM["NCM"]  = ITEM["NCM"]
                             If ITEM["Codigo da Familia"]="200" Then FAMILIA200 = ITEM["Codigo da Familia"] EndIf 
                     EndIf
                     If FAMILIA200 = "200" Then ACHOU_ITEM = False EndIf
             EndIf  
                      
             If ACHOU_ITEM
                Then SEQ_ITEM = SEQ_ITEM + 1
                     REG_ITEM["QtdF12"]              = COD_GRUP
                     REG_ITEM["Quantidade Faturada"] = 0                                     
                     Moveto TabelaG
                     End Down                                   
                     CopyFromArray REG_ITEM
                Else If FAMILIA200 = ""
                        Then CONT_OLD_ITEM = CONT_OLD_ITEM + 1
                             OLD_ITEM[CONT_OLD_ITEM] = Format("W6",PEDIDO)+Format("W3,AR",StrVal(OLD_SEQ_ITEM))+Format("W7",VSD_I_REFERENCIA)+Format("W20",COR_TECIDO)
                        Else CONT_FAMILIA_200 = CONT_FAMILIA_200 + 1 
                             FAMILIA_200[CONT_FAMILIA_200] = Format("W6",PEDIDO)+Format("W3,AR",StrVal(OLD_SEQ_ITEM))+Format("W7",VSD_I_REFERENCIA)+Format("W20",COR_TECIDO)             
                     EndIf              
             EndIf
             
             Moveto "\\Sistemas\\Vendas\\PedidoG"
             Skip
             If Eot() Then QuitLoop EndIf
           EndWhile
   EndIf      
   Moveto TabelaRP
EndScan
Do_it!
ClearAll

;---- Mensagem -----------------------------------------------------------------
GERA_RELATORIO="S"
MSG = "** Recomendamos   manter  este relatorio  caso ocorra algum erro durante//"+
      "   o processo.                                                         ////"+
      "Ser  visualizado em PDF a rela‡„o de pedidos que cont‚m itens nos grupos////"+
      "Arquivo ser  gerado em:                                                 //"
      ARQA = "O"+"_" + SubStr(DIA,1,4)+SubStr(DIA,7,2) + "_" + HORA + ".pdf "
      If PARAM_DESMEMBRAMENTO="S"
         Then MSG = MSG + Completa("-> X:\\NOTE\\PEDIDOS\\SORTIDOS\\PED_ORIG\\"+ARQA,74," ")
         Else MSG = MSG + Completa("-> X:\\NOTE\\PEDIDOS\\AGRUPADO\\PED_ORIG\\"+ARQA,74," ")
      EndIf       
      Mensagem(MSG)                                                              
                       
If GERA_RELATORIO="S"     
   Then ARQIMP=PrivDir()+"PEDAGRUP.Txt"
        If IsFile(ARQIMP)
           Then Deleta_Arquivo(ARQIMP)
        EndIf
        
        CONT_PEDIDO_SEM_REGRA = 0
        DynArray PEDIDO_SEM_REGRA[]
                
        NR = NRecords(TabelaRP)
        
        Cabecalho_R("Originais")
        View TabelaRP
        Scan
          Barra(NR, RecNo())
          Aguarde("Aguarde, verificando itens do Agrupamento "+BARRA_STRING)
        
          DynArray REGRA_SEM_GRUPO[]
          CONT_REGRA_SEM_GRUPO = 0                       
                             
          GetRecord "\\Sistemas\\Vendas\\PedidoC" [Numero do Pedido] To REG_PEDIDOC
          If RetVal
             Then PEDIDO = Format("W6",[Numero do Pedido]) + Spaces(1) + Format("W4",REG_PEDIDOC["Codigo"]) +
                           Spaces(1) + Format("W25",REG_PEDIDOC["Nome Fantasia EmitDest"]) + Spaces(1) + Format("D13",REG_PEDIDOC["Data de Emissao"]) +
                           Spaces(1) + Format("W8",REG_PEDIDOC["Situacao do Pedido"])  
             Else PEDIDO = Format("W6",[Numero do Pedido]) + Spaces(1) + "?? PEDIDO NAO ENCONTRADO NA DIGITACAO DOS PEDIDOS ??" 
          EndIf
          
          ITEM_NAO_LOCALIZADO = ""
          If IsAssigned(OLD_ITEM)
             Then For ar From 1 To DynArraySize(OLD_ITEM)
                    If [Numero do Pedido] = SubStr(OLD_ITEM[ar],1,6) 
                       Then REGRA_PED = SubStr(OLD_ITEM[ar],1,6)
                            REGRA_SEQ = NumVal(Rtrim(Ltrim(SubStr(OLD_ITEM[ar],7,3))))
                            REGRA_REF = SubStr(OLD_ITEM[ar],10,7)
                            REGRA_COR = SubStr(OLD_ITEM[ar],17,20)
                       
                            GetRecord "\\Sistemas\\Vendas\\PedidoG" REGRA_PED, REGRA_SEQ TO REG_PEDIDOG
                            If RetVal
                               Then ;---- PEDIDO A NAO SER INCLUIDO ------------
                                    If PARAM_BLOQUEIA_PEDIDO
                                       Then CONT_PEDIDO_SEM_REGRA = CONT_PEDIDO_SEM_REGRA + 1
                                            PEDIDO_SEM_REGRA[CONT_PEDIDO_SEM_REGRA] = Format("W6",REGRA_PED)
                                    EndIf
                                    CONT_REGRA_SEM_GRUPO = CONT_REGRA_SEM_GRUPO + 1
                                    REGRA_SEM_GRUPO[CONT_REGRA_SEM_GRUPO] = 
                                    Format("W8,AL","SEQ: "+StrVal(REGRA_SEQ))+Spaces(1)+Format("W26,AL","REF: "+REGRA_REF+" "+REGRA_COR)
                            EndIf
                    EndIf
                  EndFor
          EndIf                              
                
          NLINHA = NLINHA + 1
          Print File ARQIMP Format("W58",PEDIDO)

          If CONT_REGRA_SEM_GRUPO > 0
             Then For ar From 1 To DynArraySize(REGRA_SEM_GRUPO)
                    If ar > 1
                       Then Print File ARQIMP Spaces(58)
                    EndIf   
                    NLINHA = NLINHA + 1
                    Print File ARQIMP SubStr(REGRA_SEM_GRUPO[ar],1,35)+"\n"                    
                    If NLINHA >= 82
                       Then Print File ARQIMP "\n"
                            Print File ARQIMP "** CONTIUNA -> **" + "\n"
                            Print File ARQIMP "\f"
                            Cabecalho_R("Originais")            
                    EndIf   
                  EndFor
             Else Print File ARQIMP "\n"     
          EndIf
          If NLINHA >= 82
             Then Print File ARQIMP "\f"
                  Cabecalho_R("Originais")
          EndIf                                       
        EndScan
        ClearAll 
        
        Copia_Sort_Agrup("Analise")
        
        PDFZEBRA=False
        DISPOSITIVO_OPCAO="V"
        ImpriArq(ARQIMP)
EndIf

COR_MENSAGEM="ALERTA" 
ConfGeral("Este  procedimento  ir  desmembrar os itens dos pedidos para outros//"+ 
          "pedidos conforme cada grupo relacionado ao agrupamento estabelecido////"+
          "Deseja realizar este processo ?")
          
Release Vars COR_MENSAGEM
If OK<>"S"
   Then MSG = "Processo Abortado !"      
        Mensagem(MSG)
        Return
EndIf

;---- Setando o Numero do Pedido p/ Observa‡ao ----
CONT_PEDD  = 0 
CONT_MSG2  = 0
DynArray MSG2[]
DynArray PEDD[]

View TabelaRP
Scan
  If PARAM_BLOQUEIA_PEDIDO                  
     Then NAO_FAZ = False
          If DynArraySize(PEDIDO_SEM_REGRA) > 0
             Then For y From 1 To DynArraySize(PEDIDO_SEM_REGRA)
                    If PEDIDO_SEM_REGRA[y]=[Numero do Pedido]
                       Then NAO_FAZ= True
                            QuitLoop
                    EndIf
                  EndFor
          EndIf
          If NAO_FAZ Then Loop EndIf   
  EndIf    
  CONT_MSG2 = CONT_MSG2 + 1
  MSG2[CONT_MSG2] = Format("W6",[Numero do Pedido])
EndScan
ClearAll

{Ask} TypeIn TabelaG Enter
Moveto [QtdF12] Check
Do_it!        
ClearAll
      
Cont_NUM_GRUPOS = 0
Array NUM_GRUPOS[NRecords("Answer")]

View "Answer"
Scan
  Cont_NUM_GRUPOS = Cont_NUM_GRUPOS + 1
  NUM_GRUPOS[Cont_NUM_GRUPOS] = [QtdF12]
EndScan
ClearAll
Release Vars Cont_NUM_GRUPOS 

PROCESSO_EXECUTADO = False
;---- Relacionado por Pedido, e assim por cada grupo ---------------------------
{Ask} TypeIn TabelaG Enter
Moveto [Numero do Pedido ] Check
Do_It!
   
Cont_NUM_PEDIDO = 0
Array NUM_PEDIDO[NRecords("Answer")]

View "Answer"
Scan
  Cont_NUM_PEDIDO = Cont_NUM_PEDIDO + 1
  NUM_PEDIDO[Cont_NUM_PEDIDO] = [Numero do Pedido]   
EndScan
ClearAll
Release Vars Cont_NUM_PEDIDO 
;-------------------------------------------------------------------------------
For ai From 1 To ArraySize(NUM_PEDIDO)
  PEDIDO = NUM_PEDIDO[ai]

  If PARAM_BLOQUEIA_PEDIDO                  
     Then NAO_FAZ = False
          If DynArraySize(PEDIDO_SEM_REGRA) > 0
             Then For y From 1 To DynArraySize(PEDIDO_SEM_REGRA)
                    If PEDIDO_SEM_REGRA[y]=PEDIDO
                       Then NAO_FAZ= True
                            QuitLoop
                    EndIf
                  EndFor
          EndIf
          If NAO_FAZ Then Loop EndIf   
  EndIf    
  
  ANT_GRUPO = "***"
  For oi From 1 To ArraySize(NUM_GRUPOS)
    GRUPO = NUM_GRUPOS[oi] 
    
    {Ask} TypeIn TabelaG Enter
    Moveto [Numero do Pedido ] Check TypeIn "~PEDIDO"
    Moveto [Item do Pedido   ] Check
    Moveto [Qtdf12           ] Check TypeIn "~GRUPO"
    Do_It!
    Moveto [Qtdf12] NR = ImageCCount()
    ClearAll
    
    If IsEmpty("Answer") Then Loop EndIf
    
    PED_ORIGINAL = "***"
    MSG1_AUX = ""
    SEQ_IT   = 0
                                      
    View "\\Sistemas\\Vendas\\PedidoG"
    View "\\Sistemas\\Vendas\\PedidoV"   
    View "\\Sistemas\\Vendas\\PedidoC"
    Coedit TabelaG
    Scan For [Numero do Pedido] = PEDIDO And [QtdF12] = GRUPO
      Barra(NR, RecNo())
      Aguarde("Aguarde, ajustando o grupo "+StrVal(GRUPO)+" "+BARRA_STRING)

      If ANT_GRUPO <> GRUPO
         Then ANT_GRUPO = GRUPO
              OLDPED    = False
      EndIf
      
      Moveto "\\Sistemas\\Vendas\\PedidoC"   
      Moveto [Numero do Pedido]
      Locate PEDIDO
      If RetVal
         Then If Not OLDPED
                 Then VALOR_TOTAL = 0
                      ;---- Data de Entrega conforme GRUPO referente a REGRA aplicada -----
                      GetRecord "\\Sistemas\\Vendas\\Ped_regg" PARAM_REGRA,GRUPO To PED_REG
                      If RetVal
                         Then DTENTREGA = PED_REG["Data_Entrega"]
                         Else DTENTREGA = BlankDate()
                      EndIf            
                            
                      ;---- Removendo coment rios anteriores caso ocorra erro e o pedido ‚ gerado novamente -----
                      PosI = Search ("[**PEDIDO DESMEMBRADO PELO AGRUPAMENTO ",[Observacao do Pedido])
                      If PosI >0
                         Then OBS = [Observacao do Pedido]
                              PosF = Search ("**]",[Observacao do Pedido])
                              OBS = SubStr(OBS,1,PosI-1)+SubStr(OBS,PosF+3,Len(OBS))
                              [Observacao do Pedido] = OBS
                      EndIf                                            
                      MSG1_AUX  = " [**PEDIDO DESMEMBRADO DO PEDIDO "+PEDIDO+" PELO AGRUPAMENTO "+StrVal(PARAM_REGRA)+"/GRUPO "+StrVal(NumVal(GRUPO))+" **] "
                                                                   
                      If Not PROCESSO_EXECUTADO
                         Then PROCESSO_EXECUTADO = True
                      EndIf   
                      OLDPED = True
                      CopyToArray REG_ITEM              
                      CONT_PEDD = CONT_PEDD + 1 
                      While True
                        End
                        Moveto [Numero do Pedido]
                        If Numero_Lancamento("Interno","Locked_Down")
                           Then NLANC = PROXLANCTO_NLANC
                                Release Vars PROXLANCTO_NLANC
                                Quitloop
                        EndIf
                      EndWhile
                      REG_ITEM["Numero do Pedido"] = NLANC    
                      PEDD[CONT_PEDD] = NLANC
                      
                      ;---- Zerando o Valor do Desconto e do Frete -------------
                      REG_ITEM["Valor do Desconto"] = BlankNum()
                      REG_ITEM["Valor Desconto"]    = BlankNum()
                      REG_ITEM["Taxa de Desconto"]  = BlankNum()
                      REG_ITEM["Valor do Frete"]    = BlankNum()
                      ;---------------------------------------------------------
                      
                      If DTENTREGA <> BlankDate()
                         Then REG_ITEM["Data de Entrega"]  = DateVal(DTENTREGA)
                      EndIf
                      If Rtrim(REG_ITEM["Observacao do Pedido"]) <> ""
                         Then REG_ITEM["Observacao do Pedido"] = REG_ITEM["Observacao do Pedido"] + "  " + MSG1_AUX 
                         Else REG_ITEM["Observacao do Pedido"] = MSG1_AUX
                      EndIf  
                      Down
                      CopyFromArray REG_ITEM
                       
                      For i From 1 To DynArraySize(MSG2)
                        If SubStr(MSG2[i],1,6) = PEDIDO
                           Then If Search(NLANC,MSG2[i]) = 0
                                   Then If Len(MSG2[i]) < 10 
                                           Then MSG2[i] = MSG2[i] + " [**PEDIDO DESMEMBRADO PELO AGRUPAMENTO "+StrVal(PARAM_REGRA)+" PARA O(S) N§ " 
                                                MSG2[i] = MSG2[i] + NLANC
                                           Else MSG2[i] = MSG2[i] + ", " + NLANC
                                        EndIf
                                EndIf       
                                QuitLoop
                        EndIf
                      EndFor
                      SaveTables
              EndIf
      EndIf
               
      If OLDPED
         Then Moveto TabelaG
              PED_NUM = [Numero do Pedido]
              PED_SEQ = [Item do Pedido  ]

              Moveto "\\Sistemas\\Vendas\\PedidoG"
              Moveto [Numero do Pedido]
              Locate PED_NUM,PED_SEQ
              If RetVal
                 Then SEQ_IT = SEQ_IT + 1
                      CopyToArray REG_ITEM 
                      REG_ITEM["Numero do Pedido"] = NLANC
                      REG_ITEM["Item do Pedido"]   = SEQ_IT
                      VALOR_TOTAL = VALOR_TOTAL + [Preco Total]
                      End Down
                      CopyFromArray REG_ITEM
                      SaveTables
              EndIf   
      EndIf       
      Moveto TabelaG
    EndScan
   
    Moveto "\\Sistemas\\Vendas\\PedidoC"   
    Moveto [Numero do Pedido]
    Locate NLANC
    If RetVal
       Then [Valor Mercadoria Liquido] = VALOR_TOTAL         
            [Valor Nota Fiscal       ] = VALOR_TOTAL
            SaveTables
    EndIf
    ;----- NÆo vou gerar o PEDIDOV pois a data dos vencimentos pode ser outra --
    ;CALC_VENCTOS()
  
    Do_it!
    ClearAll
  Endfor
EndFor

Coedit "\\Sistemas\\Vendas\\PedidoC"
Moveto [Numero do Pedido]
For i From 1 To DynArraySize(MSG2)
  Locate SubStr(MSG2[i],1,6)
  If RetVal
     Then MSG2[i] = MSG2[i] +" **]"
          If Rtrim([Observacao do Pedido]) <> ""
             Then [Observacao do Pedido] = [Observacao do Pedido] + "   " + SubStr(MSG2[i],7,Len(MSG2[i]))
             Else [Observacao do Pedido] = SubStr(MSG2[i],7,Len(MSG2[i]))
          EndIf
          [Situacao do Pedido] = "CANCELADO"
          UnLockRecord   
   EndIf       
EndFor
Do_It!
ClearAll

If PROCESSO_EXECUTADO
   Then View "\\Sistemas\\Vendas\\PedidoI"
        Coedit "\\Sistemas\\Vendas\\PedidoG"
        ;---- Gera PedidoI -------------------------------------
        For out From 1 To DynArraySize(PEDD)
          Gera_PedidoI(PEDD[out])
        EndFor
        Do_it!
        ClearAll
        
        ;---- Gera pedido com itens da familia 200 -----------------------------
        If PROCESSO_EXECUTADO And FAMILIA200<>""
           Then Gera_Pedido_Familia_200()
        EndIf
   
        ;---- Mensagem ---------------------------------------------------------
        GERA_RELATORIO="S"
        MSG =       "Processo Conclu¡do//"+
                    "Ser  visualizado em PDF a rela‡„o de pedidos que foram desmembrados.////"+
                    "Arquivo ser  gerado em:                                             //"
        ARQB = "D"+"_" + SubStr(DIA,1,4)+SubStr(DIA,7,2) + "_" + HORA + ".pdf "
        If PARAM_DESMEMBRAMENTO="S"
           Then MSG = MSG + Completa("-> X:\\NOTE\\PEDIDOS\\SORTIDOS\\PED_DESM\\"+ARQB,68," ")
           Else MSG = MSG + Completa("-> X:\\NOTE\\PEDIDOS\\AGRUPADO\\PED_DESM\\"+ARQB,68," ")
        EndIf

        Mensagem(MSG)
        If GERA_RELATORIO="S"
           Then ARQIMP=PrivDir()+"PEDAGRUP.Txt"
                If IsFile(ARQIMP)
                   Then Deleta_Arquivo(ARQIMP)
                EndIf
                     
                PED_ORIGEM = "***" 
                Cabecalho_R("")
                For i From 1 To DynArraySize(PEDD)
                  GetRecord "\\Sistemas\\Vendas\\PedidoC" PEDD[i] To REG_PEDIDOC
                  If RetVal
                     Then REGRA  = ""
                          PEDIDO = ""
                          GRUPO  = ""
                          OBS    = REG_PEDIDOC["Observacao do Pedido"]
                                            
                          If Search("FAMILIA 200",OBS)>0
                             Then REGRA = ""
                             Else PosI = Search("PELO AGRUPAMENTO",OBS)
                                  If PosI > 0
                                     Then PosF = Search("FAMILIA 200",OBS)
                                          REGRA = SubStr(OBS,PosI+17,PosF-(PosF-1))
                                  EndIf
                          EndIf                                   
                          
                          PosI = Search("DO PEDIDO",OBS)
                          If PosI > 0
                             Then PEDIDO = SubStr(OBS,PosI+10,6) 
                          EndIf                                          
                          
                          GRUPO = ""
                          If Search("FAMILIA 200",OBS)=0
                             Then PosI = Search("GRUPO" ,OBS)
                                  If PosI > 0
                                     Then PosF = Search(" **]",OBS)
                                          GRUPO = StrVal(NumVal(SubStr(OBS,PosI+6,PosF-(PosF-1))))
                                  EndIf   
                          EndIf
                          
                          NLINHA = NLINHA + 1
                          If PED_ORIGEM <> PEDIDO
                             Then If PED_ORIGEM <> "***"
                                     Then NLINHA = NLINHA + 1
                                          Print File ARQIMP "\n"
                                  EndIf
                                  PED_ORIGEM = PEDIDO
                                  GetRecord "\\Sistemas\\Vendas\\PedidoC" PEDD[i] To REG_PEDORIGEM
                                  If RetVal
                                     Then CODIGO     = REG_PEDORIGEM["Codigo"]
                                          RAZSOC     = REG_PEDORIGEM["Nome Fantasia EmitDest"]
                                          DT_EMISSAO = REG_PEDORIGEM["Data de Emissao"]
                                          DT_EMISSAO = REG_PEDORIGEM["Data de Emissao"]
                                     Else CODIGO     = ""
                                          RAZSOC     = ""
                                          DT_EMISSAO = BlankDate()
                                  EndIf   
                                  Print File ARQIMP Format("W6",PEDIDO)
                                  Print File ARQIMP Spaces(1)+Format("W31",CODIGO+" "+RAZSOC)   
                                  Print File ARQIMP Spaces(1)+Format("D13",DT_EMISSAO)
                                  Print File ARQIMP Spaces(1)+Format("W8",REG_PEDIDOC["Situacao do Pedido"])
                                  Print File ARQIMP Spaces(1) +Format("W11",PEDD[i])
                             Else Print File ARQIMP Spaces(59)+Format("W11",PEDD[i])       
                          EndIf                                          
                          Print File ARQIMP Spaces(1)+Format("D13",REG_PEDIDOC["Data de Entrega"])
                          Print File ARQIMP Spaces(1)+Format("W5",StrVal(REGRA))
                          Print File ARQIMP Spaces(1)+Format("W5",GRUPO)+"\n"
                  EndIf   
                  If NLINHA > 82
                     Then If IsAssigned(PEDD[i+1])
                             Then GetRecord "\\Sistemas\\Vendas\\PedidoC" PEDD[i+1] To REG_PEDTEMP
                                  If RetVal
                                     Then PosI = Search("DO PEDIDO",REG_PEDIDOC["Observacao do Pedido"])
                                          If PosI > 0
                                             Then PEDTEMP = SubStr(REG_PEDIDOC["Observacao do Pedido"],PosI+10,6) 
                                          EndIf 
                                  EndIf        
                                  If PED_ORIGEM <> PEDTEMP
                                     Then Print File ARQIMP "\n"
                                          Print File ARQIMP "** CONTIUNA -> **" + "\n"
                                  EndIf
                          EndIf                
                          Print File ARQIMP "\f"
                          Cabecalho_R("Originais")            
                  EndIf                                             
                EndFor
                
                Copia_Sort_Agrup("Desmembrado")
                
                PDFZEBRA=False
                DISPOSITIVO_OPCAO="V"                
                ImpriArq(ARQIMP)              
        EndIf
   Else Mensagem("N„o foi poss¡vel realizar o processo de desmembramento de pedidos,//"+
                 "verficar  se h  pedidos com ocorrˆncia de erros e tentar realizar //"+
                 "o procedimento novamente!                                         ")
EndIf 
ClearAll

EndProc ;Monta_Pedidos_R()

;*******************************************************************************
;* Rotina para gerar pedido de itens da familia 200                            *
;*******************************************************************************
Proc Gera_Pedido_Familia_200()

PEDIDO       = ""
PED_ORIGINAL = "***"
MSG1_AUX     = ""
SEQ_IT       = 0
VALOR_TOTAL  = 0

CoEdit "\\Sistemas\\Vendas\\PedidoC"   
Moveto [Numero do Pedido]
Locate REG_PEDIDOC["Numero do Pedido"]
If RetVal
   Then DTENTREGA  = REG_PEDIDOC["Data de Entrega"]
        MSG1_AUX  = " [**PEDIDO DESMEMBRADO DO PEDIDO "+REG_PEDIDOC["Numero do Pedido"]+" REFERENTE AOS ITENS DA FAMILIA 200 **] "
        
        If Numero_Lancamento("Interno","")
           Then NLANC = PROXLANCTO_NLANC
                Release Vars PROXLANCTO_NLANC
        EndIf
        
        Moveto [Numero do Pedido]
        Locate REG_PEDIDOC["Numero do Pedido"]
        If Search("PEDIDO DESMEMBRADO PELO AGRUPAMENTO",[Observacao do Pedido])>0 
           Then PosI=Search(" **]",[Observacao do Pedido])
                If PosI>0
                   Then OBS = SubStr([Observacao do Pedido],1,PosI-1) +
                              " - N§ PEDIDO COM ITEM(NS) DA FAMILIA 200: " + NLANC + SubStr([Observacao do Pedido],PosI,4)
                        [Observacao do Pedido] = OBS
                        UnLockRecord
                        SaveTables
                EndIf  
        EndIf   
        
        REG_PEDIDOC["Numero do Pedido"] = NLANC
        PEDIDO                          = REG_PEDIDOC["Numero do Pedido"]
        
        CONT_PEDD                       = CONT_PEDD + 1
        PEDD[CONT_PEDD]                 = NLANC
        
        REG_PEDIDOC["Valor do Desconto"] = BlankNum()
        REG_PEDIDOC["Valor Desconto"]    = BlankNum()
        REG_PEDIDOC["Taxa de Desconto"]  = BlankNum()
        REG_PEDIDOC["Valor do Frete"]    = BlankNum()
                    
        ;If Rtrim(REG_PEDIDOC["Observacao do Pedido"]) <> ""
        ;   Then REG_PEDIDOC["Observacao do Pedido"] = REG_ITEM["Observacao do Pedido"] + "  " + MSG1_AUX 
        ;   Else REG_PEDIDOC["Observacao do Pedido"] = MSG1_AUX
        ;EndIf  
        End Down
        CopyFromArray REG_PEDIDOC
        PostRecord KeyViol LeaveLocked
        SaveTables        
        
        Moveto [Numero do Pedido] 
        Locate REG_PEDIDOC["Numero do Pedido"]
        If Rtrim([Observacao do Pedido]) <> ""
           Then [Observacao do Pedido] = [Observacao do Pedido] + "  " + MSG1_AUX 
           Else [Observacao do Pedido] = MSG1_AUX
        EndIf
EndIf
Do_it!
ClearAll
 
Aguarde("Aguarde, ajustando itens da familia 200 "+StrVal(GRUPO))     
View "\\Sistemas\\Vendas\\PedidoI"
View "\\Sistemas\\Vendas\\PedidoG"
View "\\Sistemas\\Vendas\\PedidoC"
Coedit TabelaG
For ar From 1 To DynArraySize(FAMILIA_200)
  REGRA_PED = SubStr(FAMILIA_200[ar],1,6)
  REGRA_SEQ = NumVal(Rtrim(Ltrim(SubStr(FAMILIA_200[ar],7,3))))
  REGRA_REF = SubStr(FAMILIA_200[ar],10,7)
  REGRA_COR = SubStr(FAMILIA_200[ar],17,20)
          
  GetRecord "\\Sistemas\\Vendas\\PedidoG" REGRA_PED, REGRA_SEQ TO REG_PEDIDOG
  If RetVal
     Then SEQ_IT = SEQ_IT + 1
          REG_PEDIDOG["Numero do Pedido"] = PEDIDO
          REG_PEDIDOG["Item do Pedido"]   = SEQ_IT
          VALOR_TOTAL = VALOR_TOTAL + REG_PEDIDOG["Preco Total"]          
          
          Moveto "\\Sistemas\\Vendas\\PedidoG"
          End Down
          CopyFromArray REG_PEDIDOG   
          SaveTables   
  EndIf
EndFor

Moveto "\\Sistemas\\Vendas\\PedidoC"   
Moveto [Numero do Pedido]
Locate NLANC
If RetVal
   Then [Valor Mercadoria Liquido] = VALOR_TOTAL         
        [Valor Nota Fiscal       ] = VALOR_TOTAL
        SaveTables
EndIf

Moveto "\\Sistemas\\Vendas\\PedidoG"
For out From 1 To 1
  Gera_PedidoI(PEDIDO)
EndFor
Do_it!
ClearAll
        
EndProc ;Gera_Pedido_Familia_200()

;*******************************************************************************
;* Rotina para Calculo de Vencimentos                                          *
;*******************************************************************************
Proc CALC_VENCTOS() 
                 
Moveto "\\Sistemas\\Vendas\\PedidoC"
Moveto [Numero do Pedido]
Locate NLANC
If Not RetVal
   Then Return
EndIf

If IsBlank([Composicao de Dias])
   Then NPC=0
   Else NPC=1
EndIf

Moveto "\\Sistemas\\Vendas\\PedidoV"
Moveto [Numero do Pedido]
Locate NLANC
If RetVal
   Then While NLANC = [Numero do Pedido]
          Del
        EndWhile
EndIf   

i=1   
Moveto "\\Sistemas\\Vendas\\PedidoC"
If Not IsBlank([Composicao de Dias])
   Then While True
          pos_s=SearchFrom("/",[Composicao de Dias],i)
          If pos_s=0
             Then QuitLoop
             Else NPC=NPC+1
                  i=pos_s+1
          EndIf
        EndWhile
EndIf                     

If NPC = 0
   Then NP = [Numero de Parcelas]
   Else If NPC = 1 And [Numero de Parcelas] > 1
           Then NP = [Numero de Parcelas]
           Else NP = NPC
        EndIf
EndIf

VRVENCTO = NDecimal(([Valor Nota Fiscal]/NP),2)
VRDIFERE = [Valor Nota Fiscal]-(VRVENCTO*NP)

If PARAM_COMIS_VENCTO="S"  
   Then VREF = NDecimal(([Valor Nota Fiscal]*[Comissao do Representante])/100,2)
        VCVENCTO = NDecimal((VREF/NPC),2)
        VCDIFERE = VREF-(VCVENCTO*NPC)
   Else VCVENCTO = BlankNum()
        VCDIFERE = BlankNum()
EndIf

DATA_ENTREGA = BlankDate()
If Not IsBlank(GRUPO)
   Then GetRecord "\\Sistemas\\Vendas\\Ped_regg" PARAM_REGRA,GRUPO To REG_PEDI
        If RetVal
           Then DATA_ENTREGA = DateVal(Upper(REG_PEDI["Data_Entrega"]))
        EndIf   
EndIf

If IsBlank(DATA_ENTREGA)
   Then DATA_ENTREGA = [\Sistemas\Vendas\PedidoC->Data de Entrega]  
EndIf   

j=1
i=1
While i<=NP
  Moveto "\\Sistemas\\Vendas\\PedidoC"
  pos_s=SearchFrom("/",[Composicao de Dias],j)
  If pos_s=0
     Then If i > 1
             Then NDIAS = NumVal(SubStr([Composicao de Dias],j,(Len([Composicao de Dias])-(j-1))))
             Else If Not IsBlank([Composicao de Dias])
                     Then NDIAS = NumVal(SubStr([Composicao de Dias],j,Len([Composicao de Dias])))
                     Else NDIAS = 0
                  EndIf
          EndIf
     Else NDIAS=NumVal(SubStr([Composicao de Dias],j,pos_s-j))
          j=pos_s+1
  EndIf
  
  Moveto "\\Sistemas\\Vendas\\PedidoV"
  End
  Down
  [Numero do Pedido ]=NLANC
  [Sequencia        ]=AlinhM(StrVal(i),2)
  If pos_s=0 And NPC=1 And NP>1
     Then [Numero de Dias   ]=BlankNum()
          If PARAM_DATAS_VENCTOS="F"   
             Then DIA_VECTO = Day(DATA_ENTREGA)
                  MES_VECTO = Month(DATA_ENTREGA)
                  ANO_VECTO = Year(DATA_ENTREGA)
                  MES_VECTO = MES_VECTO + i
                  If MES_VECTO > 12                
                     Then Switch
                            Case MES_VECTO > 48 : ANO_AUXILIAR=4
                            Case MES_VECTO > 36 : ANO_AUXILIAR=3
                            Case MES_VECTO > 24 : ANO_AUXILIAR=2
                            Case MES_VECTO > 12 : ANO_AUXILIAR=1
                          EndSwitch       
                          MES_VECTO = MES_VECTO - (12*ANO_AUXILIAR)
                          ANO_VECTO = ANO_VECTO + (1*ANO_AUXILIAR)
                  EndIf
                  ;*********** Verificando o Ultimo dia do Mˆs *****************     
                  Switch
                    Case NumVal(MES_VECTO)=2 And (NumVal(DIA_VECTO)=29 Or NumVal(DIA_VECTO)=30 Or NumVal(DIA_VECTO)=31) :
                         DIA_VECTO=SubStr(Ultimo_Dia(AlinhM(StrVal(MES_VECTO),2)+StrVal(ANO_VECTO)),1,2)         
                    Case NumVal(DIA_VECTO)=31 : DIA_VECTO=SubStr(Ultimo_Dia(AlinhM(StrVal(MES_VECTO),2)+StrVal(ANO_VECTO)),1,2)    
                  EndSwitch
                  [Data             ]=DateVal(AlinhM(StrVal(DIA_VECTO),2)+"."+AlinhM(StrVal(MES_VECTO),2)+"."+SubStr(StrVal(ANO_VECTO),3,2))
             Else [Numero de Dias   ]=NDIAS*i
                  [Data             ]=[\Sistemas\Vendas\PedidoC->Data de Emissao]+(NDIAS*i)
          EndIf
     Else [Numero de Dias   ]=NDIAS
          [Data             ]=DATA_ENTREGA+NDIAS
  EndIf
  If i<>NP
     Then [Valor            ]=VRVENCTO
          [Valor da Comissao]=VCVENCTO
     Else [Valor            ]=VRVENCTO+VRDIFERE
          [Valor da Comissao]=VCVENCTO+VCDIFERE
  EndIf

  If i=1 And NP>1 And NDIAS=0
     Then [Forma de Pagamento]="DN" 
     Else [Forma de Pagamento]=[\Sistemas\Vendas\PedidoC->Forma de Pagamento]
  EndIf   
  i=i+1
EndWhile

EndProc

;*******************************************************************************
;* Rotina para Montar Grade dos Itens do Pedido                                *
;*******************************************************************************
Proc Monta_Grade()
Private i,Array_TM
Release Vars ITEM_VER

If GRAD_AUX = ""
   Then Return False
EndIf

GetRecord "\\Sistemas\\Estoque\\TpGrade" GRAD_AUX To REG_GRADE
If Not RetVal
   Then Return False
   Else Array Array_TM[12]
                         
        Array_TM[1] ="F"+Completa(REG_GRADE["Titulo Grade1"] ,2," ") +LTrim(RTrim(REG_GRADE["Codigo Item1"]))
        Array_TM[2] ="F"+Completa(REG_GRADE["Titulo Grade2"] ,2," ") +LTrim(RTrim(REG_GRADE["Codigo Item2"]))
        Array_TM[3] ="F"+Completa(REG_GRADE["Titulo Grade3"] ,2," ") +LTrim(RTrim(REG_GRADE["Codigo Item3"]))
        Array_TM[4] ="F"+Completa(REG_GRADE["Titulo Grade4"] ,2," ") +LTrim(RTrim(REG_GRADE["Codigo Item4"]))
        Array_TM[5] ="F"+Completa(REG_GRADE["Titulo Grade5"] ,2," ") +LTrim(RTrim(REG_GRADE["Codigo Item5"]))
        Array_TM[6] ="F"+Completa(REG_GRADE["Titulo Grade6"] ,2," ") +LTrim(RTrim(REG_GRADE["Codigo Item6"]))
        Array_TM[7] ="F"+Completa(REG_GRADE["Titulo Grade7"] ,2," ") +LTrim(RTrim(REG_GRADE["Codigo Item7"]))
        Array_TM[8] ="F"+Completa(REG_GRADE["Titulo Grade8"] ,2," ") +LTrim(RTrim(REG_GRADE["Codigo Item8"]))
        Array_TM[9] ="F"+Completa(REG_GRADE["Titulo Grade9"] ,2," ") +LTrim(RTrim(REG_GRADE["Codigo Item9"]))
        Array_TM[10]="F"+Completa(REG_GRADE["Titulo Grade10"],2," ") +LTrim(RTrim(REG_GRADE["Codigo Item10"]))
        Array_TM[11]="F"+Completa(REG_GRADE["Titulo Grade11"],2," ") +LTrim(RTrim(REG_GRADE["Codigo Item11"]))
        Array_TM[12]="F"+Completa(REG_GRADE["Titulo Grade12"],2," ") +LTrim(RTrim(REG_GRADE["Codigo Item12"]))
Endif

CONT_INATIVO = 0
DynArray ITEM_VER[]

For i From 1 to 12
  TM = LTrim(RTrim(SuBstr(Array_TM[i],4,2)))
  TT = LTrim(RTrim(SuBstr(Array_TM[i],2,2)))
  
  If Len(Tm)=1 Or Len(Tm)=2
     Then CONT_INATIVO = CONT_INATIVO + 1
          Switch
            Case Len(Tm)=1 : ITEM_VER[CONT_INATIVO] = SubStr(ITEM_AUX,1,9)+TM+TT 
            Case Len(Tm)=2 : ITEM_VER[CONT_INATIVO] = SubStr(ITEM_AUX,1,8)+TM+TT 
          EndSwitch
  EndIf        
EndFor

Return True

EndProc ;Monta_Grade()
                                   
;*******************************************************************************
;* Rotina p/ Imprimir Cabe‡alho                                                *
;*******************************************************************************
Proc Cabecalho_S(PARAM)

Print File ARQIMP Chr(27)+Chr(77)
Print File ARQIMP Chr(27)+Chr(48)
Print File ARQIMP "\n\n"
Print File ARQIMP Fill("-",93)+"\n"
Switch
  Case PARAM = "Originais" : TITULO = "RELACAO DOS PEDIDOS QUE CONTEM ITENS SORTIDOS"
  OtherWise                : TITULO = "RELACAO DOS PEDIDOS DESMEMBRADO"
EndSwitch
Print File ARQIMP Format("W93,AC",TITULO)+"\n"
Print File ARQIMP Fill("-",93)+"\n"
Print File ARQIMP "\n"

Switch
  Case PARAM = "Originais" : NLINHA = 10
                             Print File ARQIMP "Pedido Cliente                        Dt Emissao Situacao OCORRENCIA(S)                      "+"\n"
                             Print File ARQIMP "------ ------------------------------ ---------- -------- -----------------------------------"+"\n"
                             Print File ARQIMP "Empresa: "+VSDGEMPRESA+" "+VSDGNOMEMP+"\n\n" 
  OtherWise                : NLINHA = 11
                             If PARAM_PEDIDO_ORIGINAL
                                Then Print File ARQIMP "Pedido      Pedido"+"\n"
                                     Print File ARQIMP "Anterior    Desmembrado Cliente                   Dt Emissao Situacao"+"\n"
                                     Print File ARQIMP "----------- ----------- ------------------------- ---------- --------"+"\n"
                                     Print File ARQIMP "Empresa: "+VSDGEMPRESA+" "+VSDGNOMEMP+"\n\n" 
                                Else Print File ARQIMP "Pedido"+"\n"
                                     Print File ARQIMP "Desmembrado Cliente                   Dt Emissao Situacao"+"\n"
                                     Print File ARQIMP "----------- ------------------------- ---------- --------"+"\n" 
                                     Print File ARQIMP "Empresa: "+VSDGEMPRESA+" "+VSDGNOMEMP+"\n\n"
                             EndIf
EndSwitch

EndProc ;Cabecalho_S()

;*******************************************************************************
;* Rotina p/ Montar Pedidos                                                    *
;*******************************************************************************
Proc Monta_Pedidos_S()
                 
Do_It!
ClearAll

OLD_EMPR = "***"
OLD_DEST = "***"       

TabelaG = Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Vendas\\PedidoG" TabelaG
ClearAll

TabelaV = Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Vendas\\PedidoV" TabelaV
ClearAll

{Ask} TypeIn TabelaRP Enter
Moveto [Numero do Pedido] Example "NPed"
{Ask} {\\Sistemas\\Vendas\\PedidoG}
Moveto [Numero do Pedido] Example "NPed" 
Moveto [Quantidade      ] Check
Do_It!

Moveto [Quantidade] NR = ImageCSum()
ClearAll
                  
CONT_SEMCOR   = 0
CONT_ITEM_AUX = 0  

DynArray SORT_SEMCOR_AUX[]
DynArray SORT_INATIVO_AUX[]
    
;----- REGRA p/ excluir do sortimento cores avulsas adicionadas ----------------
If REGRA_SEMSORT_ITEMCOMCOR
   Then DynArray SEMSORT_ITEMCOMCOR[]
        CONT_SEMSORT_ITEMCOMCOR = 0
        View "\\Sistemas\\Vendas\\PedidoG"
        Coedit TabelaRP
        Scan
          Barra(NR, RecNo())
          Aguarde("Aguarde, ajustando os itens "+BARRA_STRING)
 
          PEDIDO = [Numero do Pedido]
          Moveto "\\Sistemas\\Vendas\\PedidoG"
          Moveto [Numero do Pedido]
          Locate PEDIDO
          If ReTval
             Then While PEDIDO = [Numero do Pedido]
                    If Upper((SubStr([Descricao do Item],24,4))) <> "SORT"
                       Then CONT_SEMSORT_ITEMCOMCOR = CONT_SEMSORT_ITEMCOMCOR + 1
                            SEMSORT_ITEMCOMCOR[CONT_SEMSORT_ITEMCOMCOR] = Format("W6",PEDIDO)+Format("W15",[Referencia])+Format("W4",[Codigo da Cor_Tecido])
                    EndIf
                    Skip
                    If Eot() Then QuitLoop EndIf
                  EndWhile
          EndIf    
          Moveto TabelaRP
        EndScan
        Do_It!
        ClearAll
EndIf           

CONT_ITEM_COMCOR = 0
DynArray TODOS_ITEM_COMCOR[]                         

View "\\Sistemas\\Vendas\\Ped_RegF"
View "\\Sistemas\\Vendas\\PedidoC"
View "\\Sistemas\\Estoque\\Iten_Cor"                  
View "\\Sistemas\\Vendas\\PedidoG"
View TabelaG
Coedit TabelaRP
Scan
   PEDIDO     = [Numero do Pedido]
   
   Barra(NR, RecNo())
   Aguarde("Aguarde, ajustando o pedido "+PEDIDO+" "+BARRA_STRING)
   
   GetRecord "\\Sistemas\\Vendas\\PedidoC" PEDIDO To REG_PEDIDOC
    
   DynArray ITEM_INATIVO[]
   CONTADOR = 0 

   COD_GRADE   = "***"
   SEQ_ITEM    = 0    

   Moveto "\\Sistemas\\Vendas\\PedidoG"
   Moveto [Numero do Pedido]
   Locate PEDIDO
   If RetVal     
      Then While PEDIDO = [Numero do Pedido]
             ITEM_ORIGINAL    = [Codigo do Item]
             ITEM             = PegaCodigoRaiz([Codigo do Item])
             VSD_I_REFERENCIA = [Referencia]
             COR_ORIGINAL     = [Codigo da Cor_Tecido]
             
             POS = 0 
             If Upper((SubStr([Descricao do Item],24,4))) = "SORT"
                Then POS = 1 
             EndIf  
             CopyToArray REG_ITEM
             CopyToArray REG_ITEM_TEMP
                    
             If POS > 0
                Then DynArray SEQ_COR[]
                     DynArray ITEM_COR[] 
                     CONTC_COR = 0
                     
                     Moveto "\\Sistemas\\Estoque\\Iten_Cor"
                     Moveto [Codigo do Item]
                     Locate ITEM
                     If RetVal
                        Then ACHOU_SORT = False
                             While ITEM = [Codigo do Item]  
                               If Upper([Sigla Cor_Tecido]) <> "SORT"
                                  Then ACHOU_SORT = True
                                       CONTC_COR = CONTC_COR + 1
                                       SEQCOR    = [Sequencia da Cor_Tecido]
                                       COR       = [Codigo da Cor_Tecido]
                                
                                       ITEM_COR[CONTC_COR] = COR
                                       SEQ_COR[CONTC_COR]  = SEQCOR    
                                  
                                       ;---- Verifica Itens Inativos/Esgotados --------------------
                                       Moveto TabelaG
                                       Moveto [Codigo do Item]
                                       Ativa_Lookup()
                                       Moveto [Referencia]
                                       Locate IndexOrder by "refcor_01" VSD_I_REFERENCIA, "P", COR
                                       If RetVal
                                          Then CopyToArray REG_BUSCA_LOOKUP
                                               ITEM_AUX = REG_BUSCA_LOOKUP["Codigo do Item"]
                                               GRAD_AUX = REG_BUSCA_LOOKUP["Codigo da Grade"]
                                          Else Locate IndexOrder by "refcor_01" VSD_I_REFERENCIA, "T", COR      
                                               If RetVal 
                                                  Then CopyToArray REG_BUSCA_LOOKUP
                                                       ITEM_AUX = REG_BUSCA_LOOKUP["Codigo do Item"]
                                                       GRAD_AUX = REG_BUSCA_LOOKUP["Codigo da Grade"]
                                                  Else ITEM_AUX = ""
                                                       GRAD_AUX = ""
                                               EnDIf         
                                       EndIf   
                                       KeyPress "ESC"
                                       Moveto "\\Sistemas\\Estoque\\Iten_Cor"

                                       If ITEM_AUX <> ""
                                          Then Monta_Grade()
                                               If IsAssigned(ITEM_VER)
                                                  Then For ip From 1 To DynArraySize(ITEM_VER)
                                                         GetRecord "\\Sistemas\\Estoque\\Itens" SubStr(ITEM_VER[ip],1,10) To REG_TEMP
                                                         If RetVal
                                                            Then If REG_TEMP["Inativo"] = "S" Or REG_TEMP["Producao Esgotada"] = "S" 
                                                                    Then CONTADOR = CONTADOR + 1
                                                                         ITEM_INATIVO[CONTADOR] = Completa(COR,10," ")+
                                                                                                  SubStr(ITEM_VER[ip],1,10)+ 
                                                                                                  Completa(SubStr(ITEM_VER[ip],11,2),2," ")
                                                                 EndIf         
                                                         EndIf
                                                       EndFor     
                                               EndIf   
                                       EndIf                                     
                               EndIf         
                               Skip
                               If Eot() Then QuitLoop EndIf                      
                             EndWhile
                             
                             AUX_COM_COR = 0
                             If ACHOU_SORT
                                Then PRECO_UNIT = REG_ITEM["Preco Unitario"]
                                     ;---- Processo por Quantidade ----------
                                     For i From 1 To 12
                                       QTD_INATIVO = 0
                                       Switch
                                         Case i = 1  : QTD = REG_ITEM["Qtd1"]
                                         Case i = 2  : QTD = REG_ITEM["Qtd2"] 
                                         Case i = 3  : QTD = REG_ITEM["Qtd3"] 
                                         Case i = 4  : QTD = REG_ITEM["Qtd4"] 
                                         Case i = 5  : QTD = REG_ITEM["Qtd5"] 
                                         Case i = 6  : QTD = REG_ITEM["Qtd6"] 
                                         Case i = 7  : QTD = REG_ITEM["Qtd7"] 
                                         Case i = 8  : QTD = REG_ITEM["Qtd8"]
                                         Case i = 9  : QTD = REG_ITEM["Qtd9"]
                                         Case i = 10 : QTD = REG_ITEM["Qtd10"]
                                         Case i = 11 : QTD = REG_ITEM["Qtd11"]
                                         Case i = 12 : QTD = REG_ITEM["Qtd12"]
                                         OtherWise   : QTD = BlankNum()
                                       EndSwitch                         
                                       
                                       If QTD = BlankNum() Or QTD = ""
                                          Then Loop
                                       EndIf   
                                                            
                                       Moveto "\\Sistemas\\Vendas\\Ped_RegF"
                                       Moveto [Referencia]
                                       Locate VSD_I_REFERENCIA
                                       If RetVal
                                          Then PROXIMA_COR = [Codigo da Cor_Tecido]
                                          Else PROXIMA_COR = ""         
                                       EndIf 
                                       
                                       If PROXIMA_COR <> ""
                                          Then INI = 1
                                               For ai From 1 To DynArraySize(ITEM_COR)
                                                 If PROXIMA_COR = ITEM_COR[ai]
                                                    Then INI = ai
                                                         QuitLoop
                                                 EndIf
                                               EndFor
                                          Else INI = 1
                                       EndIf
                                       
                                       If QTD <> BlankNum() And QTD <> ""
                                          Then Aguarde("Aguarde, ajustando o pedido "+PEDIDO+" - REF "+VSD_I_REFERENCIA+"/"+StrVal(QTD)+" "+BARRA_STRING)
                                               FORCAR_SORTIDO = False
                                               QTD_AUX     = QTD
                                               While QTD > 0
                                                 CONTA_CORES = 0
                                                 TOTAL_CORES = DynArraySize(ITEM_COR)
                                                 For ii From INI To DynArraySize(ITEM_COR)
                                                   If QTD <= 0 Then QuitLoop EndIf
                                                   VSD_I_Codigo_Cor_Tecido = ITEM_COR[ii]

                                                   If IsAssigned(ITEM_COR[ii+1])
                                                      Then PROXIMA_COR = ITEM_COR[ii+1]
                                                      Else If IsAssigned(ITEM_COR[1])
                                                              Then PROXIMA_COR = ITEM_COR[1]
                                                              Else PROXIMA_COR = ""
                                                           EndIf   
                                                   EndIf
                                                   
                                                   Moveto "\\Sistemas\\Vendas\\Ped_RegF"
                                                   Moveto [Referencia]
                                                   Locate VSD_I_REFERENCIA
                                                   If Not RetVal                        
                                                      Then End Down
                                                           [Referencia  ] = VSD_I_REFERENCIA
                                                   EndIf       
                                                   [Codigo da Cor_Tecido] = PROXIMA_COR
                                                   UnLockRecord
                                                         
                                                   ITEM_COM_COR = False
                                                   ;---- Itens c/ cores nÆo particiam do sortimento---------------  
                                                   If REGRA_SEMSORT_ITEMCOMCOR
                                                      Then If Not FORCAR_SORTIDO 
                                                              Then
                                                               For cor From 1 To DynArraySize(SEMSORT_ITEMCOMCOR)
                                                                 If PEDIDO = SubStr(SEMSORT_ITEMCOMCOR[cor],1,6)
                                                                    Then AUX_REF = Ltrim(Rtrim(SubStr(SEMSORT_ITEMCOMCOR[cor],7,15)))
                                                                         AUX_COR = SubStr(SEMSORT_ITEMCOMCOR[cor],22,4)
                                                                         If AUX_COR = VSD_I_Codigo_Cor_Tecido And AUX_REF = VSD_I_REFERENCIA
                                                                            Then CONTA_CORES = CONTA_CORES + 1
                                                                                 ITEM_COM_COR = True
                                                                                 QuitLoop
                                                                         EndIf
                                                                 EndIf
                                                               EndFor
                                                               
                                                               If ITEM_COM_COR 
                                                                  Then If INI = DynArraySize(ITEM_COR)
                                                                          Then INI = 1
                                                                          Else INI = INI + 1
                                                                       EndIf   
                                                                       
                                                                       If CONTA_CORES <> TOTAL_CORES
                                                                          Then Loop
                                                                          Else CONTA_CORES = 0
                                                                               VSD_I_Codigo_Cor_Tecido = COR_ORIGINAL
                                                                               
                                                                               ACHOU = False
                                                                               For op From 1 To DynArraySize(TODOS_ITEM_COMCOR)
                                                                                 If SubStr(TODOS_ITEM_COMCOR[op],1,6) = PEDIDO And 
                                                                                    VSD_I_REFERENCIA = Rtrim(SubStr(TODOS_ITEM_COMCOR[op],11,10))
                                                                                    Then ACHOU = True
                                                                                         QuitLoop                                                                                               
                                                                                 EndIf   
                                                                               EndFor
                                                                               If Not ACHOU
                                                                                  Then CONT_ITEM_COMCOR = CONT_ITEM_COMCOR + 1
                                                                                       TODOS_ITEM_COMCOR[CONT_ITEM_COMCOR] = Format("W6",PEDIDO)+
                                                                                                                             Format("W4",VSD_I_Codigo_Cor_Tecido)+
                                                                                                                             Format("W10",VSD_I_REFERENCIA)+
                                                                                                                             Format("W6",REG_ITEM["Item do Pedido"])
                                                                               EndIf
                                                                               Release Vars ACHOU  
                                                                               
                                                                               ;----- Itens Sortidos c/ todas as Cores dos Itens Presentes serÆo serÆo excluidos -------
                                                                               ;QTD = BlankNum()
                                                                               ;Loop
                                                                               ;----- Itens Sortidos c/ todas as Cores dos Itens Presentes serÆo sortidos aleatoriamente
                                                                               FORCAR_SORTIDO = True
                                                                               INI = 1
                                                                               Loop
                                                                               ;----------------------------------------------------------------------------------------
                                                                       EndIf   
                                                               EndIf
                                                           EndIf                                                           
                                                   EndIf      
                                                   AUX_COM_COR = AUX_COM_COR + 1
                                                   ;--------------------------------------------------------------
                                                   ACHOU_ITEM=False
                                                   Moveto TabelaG
                                                   Moveto [Codigo do Item]
                                                   Ativa_Lookup()
                                                   Moveto [Referencia]
                                                   Locate IndexOrder by "refcor_01" VSD_I_REFERENCIA, "P", VSD_I_Codigo_Cor_Tecido
                                                   If RetVal
                                                      Then ACHOU_ITEM=True
                                                      Else Locate IndexOrder by "refcor_01" VSD_I_REFERENCIA, "T", VSD_I_Codigo_Cor_Tecido
                                                           If Retval
                                                              Then ACHOU_ITEM=True
                                                           EndIf
                                                   EndIf
                                                   
                                                   If ACHOU_ITEM
                                                     Then Release Vars ACHOU_ITEM
                                                          CopyToArray REG_BUSCA_LOOKUP                                
                                                          KeyPress "ESC"
                                                          
                                                          PARAM_INATIVO = True
                                                          ;----- Verificando o Codigo da Grade --------------------------------------------------
                                                          If PARAM_INATIVO
                                                             Then INATIVO = False
                                                                  GetRecord "\\Sistemas\\Estoque\\Itens" REG_BUSCA_LOOKUP["Codigo do Item"] To REG_GRADE1
                                                                  If RetVal
                                                                     Then If COD_GRADE <> REG_GRADE1["Codigo da Grade"]
                                                                             Then COD_GRADE = REG_GRADE1["Codigo da Grade"]
                                                                                  GetRecord "\\Sistemas\\Estoque\\TpGrade" COD_GRADE To REG_GRADE2
                                                                                  If RetVal
                                                                                    Then Array Array_TM[12]
                                                                                         Array_TM[1] =Completa(REG_GRADE2["Titulo Grade1"] ,2," ")
                                                                                         Array_TM[2] =Completa(REG_GRADE2["Titulo Grade2"] ,2," ")
                                                                                         Array_TM[3] =Completa(REG_GRADE2["Titulo Grade3"] ,2," ")
                                                                                         Array_TM[4] =Completa(REG_GRADE2["Titulo Grade4"] ,2," ")
                                                                                         Array_TM[5] =Completa(REG_GRADE2["Titulo Grade5"] ,2," ")
                                                                                         Array_TM[6] =Completa(REG_GRADE2["Titulo Grade6"] ,2," ")
                                                                                         Array_TM[7] =Completa(REG_GRADE2["Titulo Grade7"] ,2," ")
                                                                                         Array_TM[8] =Completa(REG_GRADE2["Titulo Grade8"] ,2," ")
                                                                                         Array_TM[9] =Completa(REG_GRADE2["Titulo Grade9"] ,2," ")
                                                                                         Array_TM[10]=Completa(REG_GRADE2["Titulo Grade10"],2," ")
                                                                                         Array_TM[11]=Completa(REG_GRADE2["Titulo Grade11"],2," ")
                                                                                         Array_TM[12]=Completa(REG_GRADE2["Titulo Grade12"],2," ")
                                                                                    Else Release Vars Array_TM
                                                                                  EndIf
                                                                          EndIf
                                                                     Else Release Vars Array_TM     
                                                                  EndIf   
                                                          EndIf
                                                          ;--------------------------------------------------------------------------------------

                                                          ;---- Verifica Itens Inativos conforme tamanho cadastrado na grade --------------------
                                                          If PARAM_INATIVO
                                                             Then If IsAssigned(Array_TM) And IsAssigned(INATIVO)
                                                                     Then FACA_PROCESSO = False
                                                                          
                                                                          TM = Ltrim(Rtrim(Array_TM[i]))
                                                                          If TM = "" Then Loop EndIf
                                                                          TM = Upper(TM)
                                                                          
                                                                          For ap From 1 To DynArraySize(ITEM_INATIVO)
                                                                            If SubStr(ITEM_INATIVO[ap],11,9)=SubStr(REG_BUSCA_LOOKUP["Codigo do Item"],1,9)
                                                                               Then TM_AUX = Rtrim(Ltrim(SubStr(ITEM_INATIVO[ap],21,2)))
                                                                                    TM_AUX = Upper(TM_AUX)
                                                                                    If TM = TM_AUX
                                                                                       Then FACA_PROCESSO = True
                                                                                            If IsAssigned(QTD_INATIVO)
                                                                                               Then QTD_INATIVO = QTD_INATIVO + 1
                                                                                             EndIf   
                                                                                             INATIVO = True
                                                                                             
                                                                                             
                                                                                  SORT_AUX = Format("W6",PEDIDO)+
                                                                                             Format("W8",VSD_I_REFERENCIA)+
                                                                                             Format("W15",REG_BUSCA_LOOKUP["Descricao da Cor_Tecido"])+
                                                                                             Format("W2",TM_AUX)
                                                                                             
                                                                                             For ol From 1 To CONT_ITEM_AUX
                                                                                               If SORT_INATIVO_AUX[ol] = SORT_AUX
                                                                                                  Then SORT_AUX = ""
                                                                                                       QuitLoop
                                                                                               EndIf
                                                                                             EndFor                                   
                                                           
                                                                                             If SORT_AUX <> ""
                                                                                                Then CONT_ITEM_AUX = CONT_ITEM_AUX + 1
                                                                                                     SORT_INATIVO_AUX[CONT_ITEM_AUX] = SORT_AUX  
                                                                                             EndIf
                                                                                             QuitLoop
                                                                                    EndIf        
                                                                            EndIf   
                                                                          EndFor
                                                                  EndIf
                                                                  If IsAssigned(QTD_INATIVO)
                                                                     Then If QTD_INATIVO = QTD_AUX 
                                                                             Then QTD = BlankNum()
                                                                                  Loop  
                                                                          EndIf
                                                                  EndIf        
                                                                  If INATIVO 
                                                                     Then If QTD > 0 And ii = DynArraySize(ITEM_COR)
                                                                             Then INI = 1
                                                                                  ii  = 0
                                                                          EndIf
                                                                          Loop
                                                                  EndIf
                                                                  Release Vars QTD_INATIVO
                                                          EndIf
                                                          ;--------------------------------------------------------------------------------------
                                                                                                                                                           
                                                          FAMILIA = REG_BUSCA_LOOKUP["Codigo da Familia"] 
                                                          VSD_I_Descricao_Item = REG_BUSCA_LOOKUP["Descricao do Item"]                 
                                                           
                                                          VSD_I_Descricao_Cor_Tecido = REG_BUSCA_LOOKUP["Descricao da Cor_Tecido"]
                                                          VSD_I_Codigo_Item    = REG_BUSCA_LOOKUP["Codigo do Item"]
                                                          CODIGO_BARRA         = REG_BUSCA_LOOKUP["Codigo do Item"]
                                                          TIPO_TRIBUTACAO      = REG_BUSCA_LOOKUP["Tipo Tributacao"]
                                                          NCM                  = REG_BUSCA_LOOKUP["NCM"] 
                                                          
                                                          ItemjaExiste = False
                                                          Moveto TabelaG
                                                          Moveto [Codigo do Item]
                                                          Locate VSD_I_Codigo_Item
                                                          If RetVal
                                                             Then While [Codigo do Item] = VSD_I_Codigo_Item
                                                                    If REG_ITEM_TEMP["Numero do Pedido"]=[Numero do Pedido]
                                                                       Then ItemjaExiste = True
                                                                            QuitLoop  
                                                                     EndIf
                                                                     Skip
                                                                     If Eot() Then QuitLoop EndIf
                                                                     Locate Next VSD_I_Codigo_Item
                                                                     If Not RetVal
                                                                        Then QuitLoop
                                                                     EndIf
                                                                  EndWhile       
                                                          EndIf 
                                                          
                                                          If Not ItemjaExiste   
                                                             Then End 
                                                                  If [Codigo do Item]<>"" 
                                                                     Then Down
                                                                  EndIf   
                                                                  SEQ_ITEM = SEQ_ITEM + 1
                                                                  [Numero do Pedido       ]=PEDIDO
                                                                  [Item do Pedido         ]=SEQ_ITEM
                                                                  [Codigo do Item         ]=VSD_I_Codigo_Item
                                                                  [Referencia             ]=VSD_I_REFERENCIA
                                                                  [Codigo da Cor_Tecido   ]=VSD_I_Codigo_Cor_Tecido
                                                                  [Descricao da Cor_Tecido]=VSD_I_Descricao_Cor_Tecido
                                                                  [ItemSortido            ]="S"
                                                          EndIf
                                                                   
                                                          Switch
                                                            Case i = 1  : [Qtd1]  = [Qtd1]  + 1
                                                            Case i = 2  : [Qtd2]  = [Qtd2]  + 1
                                                            Case i = 3  : [Qtd3]  = [Qtd3]  + 1
                                                            Case i = 4  : [Qtd4]  = [Qtd4]  + 1
                                                            Case i = 5  : [Qtd5]  = [Qtd5]  + 1
                                                            Case i = 6  : [Qtd6]  = [Qtd6]  + 1
                                                            Case i = 7  : [Qtd7]  = [Qtd7]  + 1
                                                            Case i = 8  : [Qtd8]  = [Qtd8]  + 1
                                                            Case i = 9  : [Qtd9]  = [Qtd9]  + 1
                                                            Case i = 10 : [Qtd10] = [Qtd10] + 1
                                                            Case i = 11 : [Qtd11] = [Qtd11] + 1
                                                            Case i = 12 : [Qtd12] = [Qtd12] + 1
                                                          EndSwitch

                                                          [Quantidade         ] = [Quantidade] + 1                                                              
                                                          [Preco Unitario     ] = PRECO_UNIT
                                                          [Preco Total        ] = PRECO_UNIT * [Quantidade]
                                                           
                                                          Preco_Total           = [Preco Total]
                                                          
                                                          If [Tributacao de ICMS] <>"D"
                                                                Then If Not IsBlank([Tributacao de ICMS])
                                                                       Then [Aliquota Reduzida BCICMS  ]=BlankNum()
                                                                            [Aliquota de ICMS          ]=BlankNum()
                                                                            [Valor do ICMS             ]=BlankNum()                       
                                                                     EndIf
                                                                Else If Not IsBlank([Aliquota de ICMS])
                                                                        Then 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
                                                                     EndIf
                                                          EndIf
                                                             
                                                          If [Tributacao de IPI]<>"D"
                                                            Then If Not IsBlank([Tributacao de IPI])
                                                                    Then [Aliquota de IPI        ]=BlankNum()
                                                                         [Valor do IPI           ]=BlankNum()
                                                                 EndIf
                                                            Else If Not IsBlank([Aliquota de IPI])
                                                                    Then [Valor do IPI ]=Round((Preco_Total*[Aliquota de IPI])/100,2)
                                                                 EndIf
                                                          EndIf
                                                                    
                                                          QTD = QTD - 1
                                                          If QTD > 0 And ii = DynArraySize(ITEM_COR)
                                                             Then INI = 1
                                                                  ii  = 0
                                                          EndIf
                                                          
                                                          If QTD = 0 And PROXIMA_COR = "" And INI = DynArraySize(ITEM_COR)
                                                             Then PROXIMA_COR = ITEM_COR[1]
                                                          EndIf  
                                                          UnLockRecord
                                                            
                                                     Else KeyPress "ESC"    
                                                          
                                                          ItemjaExiste = False
                                                          Moveto TabelaG
                                                          Moveto [Codigo do Item]
                                                          Locate REG_ITEM_TEMP["Codigo do Item"]
                                                          If RetVal
                                                             Then While [Codigo do Item] = REG_ITEM_TEMP["Codigo do Item"]
                                                                    If REG_ITEM_TEMP["Numero do Pedido"]=[Numero do Pedido]
                                                                       Then ItemjaExiste = True
                                                                            QuitLoop  
                                                                     EndIf
                                                                     Skip
                                                                     If Eot() Then QuitLoop EndIf
                                                                     Locate Next REG_ITEM_TEMP["Codigo do Item"]
                                                                     If Not RetVal
                                                                        Then QuitLoop
                                                                     EndIf
                                                                  EndWhile     
                                                                  
                                                          EndIf                                
                                                              
                                                          If Not ItemjaExiste
                                                             Then CONT_SEMCOR = CONT_SEMCOR + 1
                                                                  SORT_SEMCOR_AUX[CONT_SEMCOR] = Format("W6",PEDIDO) + REG_ITEM_TEMP["Codigo do Item"] + 
                                                                                                 Format("W6",REG_ITEM_TEMP["Item do Pedido"]) 
                                                                  
                                                                  SEQ_ITEM = SEQ_ITEM + 1
                                                                  GetRecord "\\Sistemas\\Estoque\\Itens" REG_ITEM["Codigo do Item"] To ITEM
                                                                  If RetVal
                                                                     Then REG_ITEM_TEMP["NCM"]         = ITEM["NCM"]
                                                                  EndIf
                                                                  REG_ITEM_TEMP["Quantidade Faturada"] = 0  
                                                                  REG_ITEM_TEMP["Item do Pedido"]      = SEQ_ITEM   
                                                                  REG_ITEM_TEMP["Quantidade"]          = 0
                                                                  REG_ITEM_TEMP["Preco Total"]         = 0
                                                                  End 
                                                                  If [Codigo do Item] <> ""
                                                                     Then Down
                                                                  EndIf   
                                                                  CopyFromArray REG_ITEM_TEMP
                                                                  For it From 1 To 12
                                                                    CAMPO = "Qtd"+StrVal(it)
                                                                    If i <> it
                                                                       Then Moveto Field CAMPO
                                                                            [] = BlankNum()
                                                                       Else Moveto Field CAMPO
                                                                            Quantidade = []
                                                                            [Quantidade] = Quantidade
                                                                    EndIf
                                                                  EndFor 
                                                                  [Preco Total] = REG_ITEM_TEMP["Preco Unitario"] * [Quantidade]
                                                             Else Quantidade = 0
                                                                  Switch
                                                                    Case i = 1  : [Qtd1]  = [Qtd1]  + REG_ITEM_TEMP["Qtd1"]
                                                                                  Quantidade = REG_ITEM_TEMP["Qtd1"]
                                                                    Case i = 2  : [Qtd2]  = [Qtd2]  + REG_ITEM_TEMP["Qtd2"]
                                                                                  Quantidade = REG_ITEM_TEMP["Qtd2"]
                                                                    Case i = 3  : [Qtd3]  = [Qtd3]  + REG_ITEM_TEMP["Qtd3"]
                                                                                  Quantidade = REG_ITEM_TEMP["Qtd3"]
                                                                    Case i = 4  : [Qtd4]  = [Qtd4]  + REG_ITEM_TEMP["Qtd4"]
                                                                                  Quantidade = REG_ITEM_TEMP["Qtd4"]
                                                                    Case i = 5  : [Qtd5]  = [Qtd5]  + REG_ITEM_TEMP["Qtd5"]
                                                                                  Quantidade = REG_ITEM_TEMP["Qtd5"]
                                                                    Case i = 6  : [Qtd6]  = [Qtd6]  + REG_ITEM_TEMP["Qtd6"]
                                                                                  Quantidade = REG_ITEM_TEMP["Qtd6"]
                                                                    Case i = 7  : [Qtd7]  = [Qtd7]  + REG_ITEM_TEMP["Qtd7"]
                                                                                  Quantidade = REG_ITEM_TEMP["Qtd7"]
                                                                    Case i = 8  : [Qtd8]  = [Qtd8]  + REG_ITEM_TEMP["Qtd8"]
                                                                                  Quantidade = REG_ITEM_TEMP["Qtd8"]
                                                                    Case i = 9  : [Qtd9]  = [Qtd9]  + REG_ITEM_TEMP["Qtd9"]
                                                                                  Quantidade = REG_ITEM_TEMP["Qtd9"]
                                                                    Case i = 10 : [Qtd10] = [Qtd10] + REG_ITEM_TEMP["Qtd10"]
                                                                                  Quantidade = REG_ITEM_TEMP["Qtd10"]
                                                                    Case i = 11 : [Qtd11] = [Qtd11] + REG_ITEM_TEMP["Qtd11"]
                                                                                  Quantidade = REG_ITEM_TEMP["Qtd11"]
                                                                    Case i = 12 : [Qtd12] = [Qtd12] + REG_ITEM_TEMP["Qtd12"]
                                                                                  Quantidade = REG_ITEM_TEMP["Qtd12"]
                                                                  EndSwitch     
                                                                  [Quantidade ] = [Quantidade] + Quantidade
                                                                  [Preco Total] = REG_ITEM_TEMP["Preco Unitario"] * [Quantidade]
                                                                  
                                                                  Preco_Total           = [Preco Total]
                                                            
                                                                  If [Tributacao de ICMS] <>"D"
                                                                      Then If Not IsBlank([Tributacao de ICMS])
                                                                             Then [Aliquota Reduzida BCICMS  ]=BlankNum()
                                                                                  [Aliquota de ICMS          ]=BlankNum()
                                                                                  [Valor do ICMS             ]=BlankNum()                       
                                                                           EndIf
                                                                      Else If Not IsBlank([Aliquota de ICMS])
                                                                              Then 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
                                                                           EndIf
                                                                  EndIf
                                                                   
                                                                  If [Tributacao de IPI]<>"D"
                                                                    Then If Not IsBlank([Tributacao de IPI])
                                                                            Then [Aliquota de IPI        ]=BlankNum()
                                                                                 [Valor do IPI           ]=BlankNum()
                                                                         EndIf
                                                                    Else If Not IsBlank([Aliquota de IPI])
                                                                            Then [Valor do IPI ]=Round((Preco_Total*[Aliquota de IPI])/100,2)
                                                                         EndIf
                                                                  EndIf
                                                          EndIf  
                                                          QTD = 0
                                                          If QTD = 0 And PROXIMA_COR = "" And INI = DynArraySize(ITEM_COR)
                                                             Then PROXIMA_COR = ITEM_COR[1]
                                                          EndIf 
                                                          UnLockRecord 
                                                   EndIf    
                                                 EndFor
                                              EndWhile  
                                       EndIf
                                     EndFor      
                             EndIf       
                        Else CONT_SEMCOR = CONT_SEMCOR + 1
                             SORT_SEMCOR_AUX[CONT_SEMCOR] = Format("W6",PEDIDO) + Format("W10",ITEM) + Format("W6",REG_ITEM["Item do Pedido"]) 
                             ACHOU_SORT = False
                     EndIf  
                Else CONT_SEMCOR = CONT_SEMCOR + 1
                     SORT_SEMCOR_AUX[CONT_SEMCOR] = Format("W6",REG_ITEM["Numero do Pedido"]) + 
                                                    Format("W10",REG_ITEM["Codigo do Item"])  + 
                                                    Format("W6",REG_ITEM["Item do Pedido"])
                     ACHOU_SORT = False
             EndIf
             
             If Not ACHOU_SORT
                Then SEQ_ITEM = SEQ_ITEM + 1
                     GetRecord "\\Sistemas\\Estoque\\Itens" REG_ITEM["Codigo do Item"] To ITEM
                     If RetVal
                        Then REG_ITEM["NCM"]         = ITEM["NCM"]
                     EndIf
                     REG_ITEM["Quantidade Faturada"] = 0  
                     REG_ITEM["Item do Pedido"]      = SEQ_ITEM
                              
                     If Search("SORT",REG_ITEM["Descricao da Cor_Tecido"])>0         
                        Then CONT_SEMCOR = CONT_SEMCOR + 1
                             SORT_SEMCOR_AUX[CONT_SEMCOR] = Format("W6",REG_ITEM["Numero do Pedido"]) + 
                                                            Format("W10",REG_ITEM["Codigo do Item"])  + 
                                                            Format("W6",REG_ITEM["Item do Pedido"])
                     EndIf         
                     
                     ITEM_NOVO = True
                     Moveto TabelaG   
                     Home
                     Moveto [Numero do Pedido]
                     Locate REG_ITEM["Numero do Pedido"]
                     If RetVal
                        Then While [Numero do Pedido]=REG_ITEM["Numero do Pedido"]
                               If [Codigo do Item]=REG_ITEM["Codigo do Item"]
                                  Then ITEM_NOVO = False
                                       QuitLoop
                               EndIf        
                               Skip
                               If Eot() Then QuitLoop EndIf
                             EndWhile
                     EndIf   
                     
                     If ITEM_NOVO
                        Then End Down
                             CopyFromArray REG_ITEM
                        Else If REG_ITEM["Qtd1"]>0  Then [Qtd1 ]=[Qtd1 ]+REG_ITEM["Qtd1"]  EndIf
                             If REG_ITEM["Qtd2"]>0  Then [Qtd2 ]=[Qtd2 ]+REG_ITEM["Qtd2"]  EndIf
                             If REG_ITEM["Qtd3"]>0  Then [Qtd3 ]=[Qtd3 ]+REG_ITEM["Qtd3"]  EndIf
                             If REG_ITEM["Qtd4"]>0  Then [Qtd4 ]=[Qtd4 ]+REG_ITEM["Qtd4"]  EndIf
                             If REG_ITEM["Qtd5"]>0  Then [Qtd5 ]=[Qtd5 ]+REG_ITEM["Qtd5"]  EndIf
                             If REG_ITEM["Qtd6"]>0  Then [Qtd6 ]=[Qtd6 ]+REG_ITEM["Qtd6"]  EndIf
                             If REG_ITEM["Qtd7"]>0  Then [Qtd7 ]=[Qtd7 ]+REG_ITEM["Qtd7"]  EndIf
                             If REG_ITEM["Qtd8"]>0  Then [Qtd8 ]=[Qtd8 ]+REG_ITEM["Qtd8"]  EndIf
                             If REG_ITEM["Qtd9"]>0  Then [Qtd9 ]=[Qtd9 ]+REG_ITEM["Qtd9"]  EndIf
                             If REG_ITEM["Qtd10"]>0 Then [Qtd10]=[Qtd10]+REG_ITEM["Qtd10"] EndIf
                             If REG_ITEM["Qtd11"]>0 Then [Qtd11]=[Qtd11]+REG_ITEM["Qtd11"] EndIf
                             If REG_ITEM["Qtd12"]>0 Then [Qtd12]=[Qtd12]+REG_ITEM["Qtd12"] EndIf
                              
                             [Quantidade]=[Quantidade]+REG_ITEM["Quantidade"]
                             [Preco Total]=[Preco Unitario]*[Quantidade]
                             UnlockRecord
                     EndIf                        
             EndIf
             
             Moveto "\\Sistemas\\Vendas\\PedidoG"
             Skip
             If Eot() Then QuitLoop EndIf
           EndWhile
   EndIf      
   Moveto TabelaRP
EndScan
Do_it!
ClearAll                                            

CONT_SORTIDO = 0
DynArray PEDIDO_SORTIDO[]

View TabelaRP
Scan
  CONT_SORTIDO = CONT_SORTIDO + 1
  PEDIDO_SORTIDO[CONT_SORTIDO] = AlinhM(StrVal(CONT_SORTIDO),3)+Format("W6",[Numero do Pedido])    
EndScan
ClearAll

;---- Mensagem -----------------------------------------------------------------
GERA_RELATORIO="N"
If CONT_SEMCOR > 0
   Then GERA_RELATORIO="S"
        MSG = "** Recomendamos   manter  este relatorio  caso ocorra algum erro durante//"+
              "   o processo.                                                          ////"+
              "Ser  visualizado em PDF a rela‡„o de pedidos que cont‚m itens sortidos. ////"+
              "Arquivo ser  gerado em:                                                 //"
              ARQA = "O"+"_" + SubStr(DIA,1,4)+SubStr(DIA,7,2) + "_" + HORA + ".pdf "
              If PARAM_DESMEMBRAMENTO="S"
                 Then MSG = MSG + Completa("-> X:\\NOTE\\PEDIDOS\\SORTIDOS\\PED_ORIG\\"+ARQA,74," ")
                 Else MSG = MSG + Completa("-> X:\\NOTE\\PEDIDOS\\AGRUPADO\\PED_ORIG\\"+ARQA,74," ")
              EndIf       
              Mensagem(MSG)            
EndIf                 
If GERA_RELATORIO="S"
   Then ARQIMP=PrivDir()+"PEDSORT.Txt"
        If IsFile(ARQIMP)
           Then Deleta_Arquivo(ARQIMP)
        EndIf
        Cabecalho_S("Originais")
        View TabelaRP
        Scan
          If [Numero do Pedido]="" Then Loop EndIf
          DynArray SORT_INATIVO[]
          DynArray SORT_SEMCOR[]
          CONT_SEMCOR = 0
          
          GetRecord "\\Sistemas\\Vendas\\PedidoC" [Numero do Pedido] To REG_PEDIDOC
          If RetVal
             Then PEDIDO = Format("W6",[Numero do Pedido]) + Spaces(1) + Format("W4",REG_PEDIDOC["Codigo"]) +
                           Spaces(1) + Format("W25",REG_PEDIDOC["Nome Fantasia EmitDest"]) + Spaces(1) + Format("D13",REG_PEDIDOC["Data de Emissao"]) +
                           Spaces(1) + Format("W8",REG_PEDIDOC["Situacao do Pedido"])  
             Else PEDIDO = Format("W6",[Numero do Pedido]) + Spaces(1) + "?? PEDIDO NAO ENCONTRADO NA DIGITACAO DOS PEDIDOS ??" 
          EndIf
          
          If IsAssigned(SORT_SEMCOR_AUX) Or IsAssigned(TODOS_ITEM_COMCOR) 
             Then If IsAssigned(SORT_SEMCOR_AUX)
                     Then For ar From 1 To DynArraySize(SORT_SEMCOR_AUX)
                            If [Numero do Pedido] = SubStr(SORT_SEMCOR_AUX[ar],1,6) 
                               Then SORT_PED  = SubStr(SORT_SEMCOR_AUX[ar],1,6)
                                    
                                    SORT_SEQ  = NumVal(SubStr(SORT_SEMCOR_AUX[ar],17,6))
                                    SORT_ITEM = SubStr(SORT_SEMCOR_AUX[ar],7,10)
                                    GetRecord "\\Sistemas\\Vendas\\PedidoG" SORT_PED, SORT_SEQ TO REG_PEDIDOG
                                    If RetVal
                                       Then CONT_SEMCOR = CONT_SEMCOR + 1
                                            SORT_SEMCOR[CONT_SEMCOR] = 
                                            ;Format("W8,AL","SEQ: "+StrVal(REG_PEDIDOG["Item do Pedido"]))+Spaces(1)+
                                            Format("W12","REF: "+REG_PEDIDOG["Referencia"])+Spaces(1)+
                                            Format("W26,AL","COR: "+REG_PEDIDOG["Descricao da Cor_Tecido"])
                                    EndIf          
                            EndIf          
                          EndFor       
                  EndIf
                  
                  If IsAssigned(TODOS_ITEM_COMCOR)
                     Then For ar From 1 To DynArraySize(TODOS_ITEM_COMCOR)
                            If [Numero do Pedido] = SubStr(TODOS_ITEM_COMCOR[ar],1,6) 
                               Then SORT_PED  = SubStr(TODOS_ITEM_COMCOR[ar],1,6)
                                    
                                    SORT_COR = Rtrim(SubStr(TODOS_ITEM_COMCOR[ar],7,4))
                                    SORT_REF = Rtrim(SubStr(TODOS_ITEM_COMCOR[ar],11,10))
                                    SORT_SEQ = NumVal(SubStr(TODOS_ITEM_COMCOR[ar],21,6))
                                    
                                    GetRecord "\\Sistemas\\Vendas\\PedidoG" SORT_PED, SORT_SEQ TO REG_PEDIDOG
                                    If RetVal
                                       Then CONT_SEMCOR = CONT_SEMCOR + 1
                                            SORT_SEMCOR[CONT_SEMCOR] = 
                                            Format("W12","REF: "+REG_PEDIDOG["Referencia"])+Spaces(1)+
                                            Format("W26,AL","COR: [** SORTIDO **]")
                                    EndIf       
                            EndIf              
                          EndFor  
                  EndIf        
          EndIf     
                                          
          If IsAssigned(SORT_INATIVO_AUX)
             Then CONT_ITEM_AUX = 0
                  For at From 1 To DynArraySize(SORT_INATIVO_AUX)
                    INATIVO_PED = SubStr(SORT_INATIVO_AUX[at],1,6)
                    If [Numero do Pedido] = INATIVO_PED 
                       Then INATIVO_REF = SubStr(SORT_INATIVO_AUX[at],7,8)
                            INATIVO_COR = SubStr(SORT_INATIVO_AUX[at],15,15)
                            INATIVO_TM  = SubStr(SORT_INATIVO_AUX[at],30,2)
                            
                            INATIVO_AUX = "REF: "+Format("W5",INATIVO_REF)+Spaces(1)+
                                                  Format("W2",INATIVO_TM)+Spaces(1)+
                                                  Format("W10",INATIVO_COR)
                            
                            CONT_ITEM_AUX = CONT_ITEM_AUX + 1
                            If CONT_ITEM_AUX = 1
                               Then SORT_INATIVO[CONT_ITEM_AUX] = "INATIVO: " + INATIVO_AUX
                               Else SORT_INATIVO[CONT_ITEM_AUX] = Spaces(9) + INATIVO_AUX
                            EndIf
                    EndIf          
                  EndFor                  
          EndIf   
        
          NLINHA = NLINHA + 1
          Print File ARQIMP PEDIDO

          If CONT_SEMCOR > 0
             Then For ar From 1 To DynArraySize(SORT_SEMCOR)
                    If ar = 1
                       Then Print File ARQIMP Spaces(1)                    
                       Else Print File ARQIMP Spaces(58)
                    EndIf
                    Print File ARQIMP SORT_SEMCOR[ar]+"\n"   
                    If NLINHA >= 60
                       Then Print File ARQIMP "\f"
                            Cabecalho_S("Originais")
                            NLINHA = NLINHA + 2
                            Print File ARQIMP PEDIDO + "\n"
                            Print File ARQIMP Spaces(2) + "** CONTIUNA -> **" + "\n"
                      Else NLINHA = NLINHA + 1      
                    EndIf   
                  EndFor
          EndIf       
          Print File ARQIMP "\n"
          
          If DynArraySize(SORT_INATIVO) > 0
             Then For ar From 1 To DynArraySize(SORT_INATIVO)
                    If CONT_SEMCOR = 0 And ar = 1
                       Then Print File ARQIMP Spaces(1)                    
                       Else Print File ARQIMP Spaces(58)
                    EndIf
                    Print File ARQIMP SORT_INATIVO[ar]+"\n"   
                    If NLINHA >= 60
                       Then Print File ARQIMP "\f"
                            Cabecalho_S("Originais")
                            NLINHA = NLINHA + 2
                            Print File ARQIMP PEDIDO + "\n"
                            Print File ARQIMP Spaces(2) + "** CONTIUNA -> **" + "\n"
                       Else NLINHA = NLINHA + 1     
                    EndIf   
                  EndFor
                  NLINHA = NLINHA + 1
                  Print File ARQIMP "\n"   
          EndIf                 
          
          If NLINHA >= 60
             Then Print File ARQIMP "\f"
                  Cabecalho_S("Originais")
          EndIf    
        EndScan
        ClearAll
       
        Copia_Sort_Agrup("Analise")
       
        PDFZEBRA=False
        DISPOSITIVO_OPCAO="V"
        ImpriArq(ARQIMP)
EndIf

COR_MENSAGEM="ALERTA" 
ConfGeral("Este  procedimento  ir  desmembrar os itens sortidos para itens com cores//"+ 
          "que s„o relacionadas a ele.                                              ////"+
          "Deseja realizar este processo ?")  
Release Vars COR_MENSAGEM
If OK<>"S"
   Then Mensagem("Processo Abortado !")
        Return
EndIf

{Ask} TypeIn TabelaRP Enter
Moveto [Numero do Pedido] Check
Do_It!
ClearAll

NR = NRecords("Answer")

PROCESSO_EXECUTADO = False
View TabelaG
View TabelaV
View "\\Sistemas\\Vendas\\PedidoGT"
View "\\Sistemas\\Vendas\\PedidoG"
View "\\Sistemas\\Vendas\\PedidoV"   
View "\\Sistemas\\Vendas\\PedidoC"
Coedit "Answer"

Scan  
  Barra(NR, RecNo())
  Aguarde("Aguarde, ajustando o pedido "+[Numero do Pedido]+" "+BARRA_STRING)
  
  Moveto TabelaG           
  Moveto [Numero do Pedido]    
  Locate [Answer->Numero do Pedido]
  If RetVal
     Then PROCESSO_EXECUTADO = True   
          NLANC_ORIGINAL = ""
          NLANC = ""
          
          Moveto "\\Sistemas\\Vendas\\PedidoC"   
          Moveto [Numero do Pedido]
          Locate [Answer->Numero do Pedido]
          If RetVal
             Then ;---- Removendo coment rios anteriores caso ocorra erro e o pedido ‚ gerado novamente -----
                  If PARAM_PEDIDO_ORIGINAL
                     Then PosI = Search ("[**PEDIDO SORTIDO DESMEMBRADO PARA O N",[Observacao do Pedido])
                          If PosI >0
                             Then OBS = [Observacao do Pedido]
                                  PosF = Search ("**]",[Observacao do Pedido])
                                  OBS = SubStr(OBS,1,PosI-1)+SubStr(OBS,PosF+3,Len(OBS))
                                  [Observacao do Pedido] = OBS
                          EndIf
                     Else PosI = Search ("[**PEDIDO SORTIDO DESMEMBRADO",[Observacao do Pedido])
                          If PosI >0
                             Then OBS = [Observacao do Pedido]
                                  PosF = Search ("**]",[Observacao do Pedido])
                                  OBS = SubStr(OBS,1,PosI-1)+SubStr(OBS,PosF+3,Len(OBS))
                                  [Observacao do Pedido] = OBS
                          EndIf
                  EndIf                      
                  
                  OBS = [Observacao do Pedido]             
                  CopyToArray REG_ITEM
                  
                  If PARAM_PEDIDO_ORIGINAL
                     Then REG_ITEM["Observacao do Pedido"] = OBS + " [**PEDIDO DESMEMBRADO PELO SORTIDO N§ "+[Answer->Numero do Pedido]+"**]"
                     Else NLANC_ORIGINAL = REG_ITEM["Numero do Pedido"]
                          REG_ITEM["Observacao do Pedido"] = OBS + " [**PEDIDO SORTIDO DESMEMBRADO**]"
                  EndIf
                  
                  End
                  NLANC = AlinhM(StrVal(NumVal([Numero do Pedido])+1),6)
                  
                  If PARAM_PEDIDO_ORIGINAL 
                     Then REG_ITEM["Numero do Pedido"] = NLANC                                       
                          Down
                          CopyFromArray REG_ITEM
                          PostRecord KeyViol LeaveLocked
                          
                          Moveto [Numero do Pedido]
                          Locate [Answer->Numero do Pedido]
                          [Observacao do Pedido] = OBS + " [**PEDIDO SORTIDO DESMEMBRADO PARA O N§ "+AlinhM(StrVal(NLANC),6)+"**]"
                          SaveTables
                           
                          For tu From 1 To DynArraySize(PEDIDO_SORTIDO)
                            If SubStr(PEDIDO_SORTIDO[tu],4,6) = [Answer->Numero do Pedido]
                               Then PEDIDO_SORTIDO[tu] = SubStr(PEDIDO_SORTIDO[tu],1,3) + SubStr(PEDIDO_SORTIDO[tu],4,6) + Format("W6",NLANC)
                                    QuitLoop
                            EndIf   
                          EndFor      
                     Else If NLANC_ORIGINAL <> ""
                             Then Moveto [Numero do Pedido]
                                  Locate NLANC_ORIGINAL
                                  If RetVal
                                     Then [Observacao do Pedido] = REG_ITEM["Observacao do Pedido"]
                                          UnLockRecord
                                  EndIf   
                          EndIf 
                  EndIf    
          EndIf
                                                                                
          If NLANC <> ""
             Then Moveto TabelaG
                  Moveto [Numero do Pedido]
                  Locate [Answer->Numero do Pedido]
                  If RetVal    
                     Then While True
                            If [Numero do Pedido] = [Answer->Numero do Pedido]
                               Then [Numero do Pedido] = NLANC
                            EndIf
                            If Eot() Then QuitLoop EndIf
                            Home
                            Locate Next [Answer->Numero do Pedido]
                            If Not RetVal Then QuitLoop EndIf
                          EndWhile
                  EndIf
                          
                  Moveto TabelaG 
                  Moveto [Numero do Pedido]
                  Locate NLANC
                  If RetVal 
                     Then While NLANC = [Numero do Pedido]
                            CopyToArray REG_ITEM             
                                                  
                            Moveto "\\Sistemas\\Vendas\\PedidoG"
                            End Down
                            CopyFromArray REG_ITEM
                            UnlockRecord   
                     
                            Moveto TabelaG 
                            Skip
                            If Eot() Then QuitLoop EndIf
                          EndWhile
                          Moveto "\\Sistemas\\Vendas\\PedidoG"
                          SaveTables
                  EndIf    
                  
                  If Not PARAM_PEDIDO_ORIGINAL
                     Then Moveto TabelaG
                          Moveto [Numero do Pedido]
                          Locate NLANC
                          If RetVal
                             Then While True
                                    If [Numero do Pedido] = NLANC
                                       Then Del
                                    EndIf
                                    If Eot() Then QuitLoop EndIf
                                    Home
                                    Locate Next NLANC
                                    If Not RetVal Then QuitLoop EndIf
                                  EndWhile
                          EndIf  
                          
                          LIMPA_PEDIDO = False
                          Moveto "\\Sistemas\\Vendas\\PedidoG"
                          Moveto [Numero do Pedido]
                          Locate NLANC_ORIGINAL
                          If RetVal
                             Then While True
                                    If [Numero do Pedido] = NLANC_ORIGINAL
                                       Then ;----- Tabela Armazenando os Pedidos de Grade Originais ----------
                                            CopyToArray REG_PEDGT
                                            Moveto "\\Sistemas\\Vendas\\PedidoGT"
                                            If Not LIMPA_PEDIDO
                                               Then LIMPA_PEDIDO = True
                                                    Moveto [Numero do Pedido]
                                                    Locate NLANC_ORIGINAL
                                                    If RetVal
                                                       Then While NLANC_ORIGINAL = [Numero do Pedido]
                                                              Del
                                                            EndWhile
                                                    EndIf 
                                            EndIf
                                            End Down
                                            CopyFromArray REG_PEDGT
                                            UnLockRecord                 
                                            ;----- Em 23.06.2015 ---------------------------------------------
                                            Moveto "\\Sistemas\\Vendas\\PedidoG"
                                            Del
                                    EndIf
                                    If Eot() Then QuitLoop EndIf
                                    Home
                                    Locate Next NLANC_ORIGINAL
                                    If Not RetVal Then QuitLoop EndIf
                                  EndWhile
                          EndIf
                          Home
                          Moveto [Numero do Pedido]
                          Locate NLANC
                          If RetVal
                             Then While True
                                    If [Numero do Pedido] = NLANC
                                       Then [Numero do Pedido] = NLANC_ORIGINAL
                                    EndIf   
                                    If Eot() Then QuitLoop EndIf
                                    Home
                                    Locate Next NLANC
                                    If Not RetVal Then QuitLoop EndIf
                                  EndWhile     
                          EndIf    
                          Release Vars LIMPA_PEDIDO    
                  EndIf 

                  If PARAM_PEDIDO_ORIGINAL
                     Then Moveto "\\Sistemas\\Vendas\\PedidoV"   
                          Moveto [Numero do Pedido]
                          Locate [Answer->Numero do Pedido]
                          If RetVal
                             Then While [Numero do Pedido] = [Answer->Numero do Pedido]
                                    CopyToArray REG_ITEM
                                    REG_ITEM["Numero do Pedido"] = NLANC
                                                                 
                                    Moveto TabelaV
                                    End Down
                                    CopyFromArray REG_ITEM
                                    UnLockRecord
                                    
                                    Moveto "\\Sistemas\\Vendas\\PedidoV"
                                    Skip    
                                    If Eot() Then QuitLoop EndIf
                                  EndWhile
                                  Moveto TabelaV
                                  SaveTables
                                  
                                  Moveto TabelaV
                                  Moveto [Numero do Pedido]
                                  Locate NLANC
                                  If RetVal
                                     Then While NLANC = [Numero do Pedido]
                                            CopyToArray REG_ITEM
                                            
                                            Moveto "\\Sistemas\\Vendas\\PedidoV"
                                            End Down
                                            CopyFromArray REG_ITEM
                                            UnlockRecord
                                            
                                            Moveto TabelaV
                                            Skip
                                            If Eot() Then QuitLoop EndIf
                                          EndWhile
                                          Moveto "\\Sistemas\\Vendas\\PedidoV"
                                          SaveTables
                                  EndIf           
                          EndIf    
                  EndIf
          EndIf
  EndIf
  Moveto "Answer"
EndScan
Do_It!
ClearAll

If PROCESSO_EXECUTADO
   Then If PARAM_PEDIDO_ORIGINAL
           Then {Ask} TypeIn TabelaRP Enter
                Moveto [Numero do Pedido  ] Example "Ped"
                {Ask} {\\Sistemas\\Vendas\\PedidoC}
                Moveto [Numero do Pedido  ] Example "Ped"
                Moveto [Situacao do Pedido] TypeIn "Changeto CANCELADO"
                Do_it!   
        EndIf
        Empty TabelaV
        Empty TabelaRP
        
        Delete TabelaG
        Delete TabelaV 
        
        ;---- Mensagem ---------------------------------------------------------
        GERA_RELATORIO="S"                                                                                  
        MSG = "Processo Conclu¡do//"+
              "Ser  visualizado em PDF a rela‡„o de pedidos que foram desmembrados.////"+
              "Arquivo ser  gerado em:                                             //"
        ARQB = "D"+"_" + SubStr(DIA,1,4)+SubStr(DIA,7,2) + "_" + HORA + ".pdf "
        If PARAM_DESMEMBRAMENTO="S"
           Then MSG = MSG + Completa("-> X:\\NOTE\\PEDIDOS\\SORTIDOS\\PED_DESM\\"+ARQB,68," ")
           Else MSG = MSG + Completa("-> X:\\NOTE\\PEDIDOS\\AGRUPADO\\PED_DESM\\"+ARQB,68," ")
        EndIf         
        Mensagem(MSG)              
        If GERA_RELATORIO="S"
           Then ARQIMP=PrivDir()+"PEDSORT.Txt"
                If IsFile(ARQIMP)
                   Then Deleta_Arquivo(ARQIMP)
                EndIf
                
                STOP_SORTIDO = DynArraySize(PEDIDO_SORTIDO)
                CONT_SORTIDO = 0
                Cabecalho_S("")
                While True
                  NLINHA = NLINHA + 1
                  CONT_SORTIDO = CONT_SORTIDO + 1
                                
                  If PARAM_PEDIDO_ORIGINAL
                     Then NUM_PED = SubStr(PEDIDO_SORTIDO[CONT_SORTIDO],10,6)
                     Else NUM_PED = SubStr(PEDIDO_SORTIDO[CONT_SORTIDO],4,6)
                  EndIf   
                  PEDIDO  = ""
                             
                  GetRecord "\\Sistemas\\Vendas\\PedidoC" NUM_PED To REG_PEDIDOC
                  If RetVal
                     Then If PARAM_PEDIDO_ORIGINAL
                             Then PEDIDO = PEDIDO + Format("W11",SubStr(PEDIDO_SORTIDO[CONT_SORTIDO],4,6))  + Spaces(1) +
                                                    Format("W11",SubStr(PEDIDO_SORTIDO[CONT_SORTIDO],10,6)) 
                             Else PEDIDO = PEDIDO + Format("W11",SubStr(PEDIDO_SORTIDO[CONT_SORTIDO],4,6))                         
                          EndIf
                          PEDIDO = PEDIDO + 
                                   Spaces(1) + Format("W4",REG_PEDIDOC["Codigo"]) +
                                   Spaces(1) + Format("W20",REG_PEDIDOC["Nome Fantasia EmitDest"]) + 
                                   Spaces(1) + Format("D13",REG_PEDIDOC["Data de Emissao"]) +
                                   Spaces(1) + Format("D13",REG_PEDIDOC["Situacao do Pedido"]) 
                     Else If PARAM_PEDIDO_ORIGINAL
                             Then PEDIDO = Format("W11",SubStr(PEDIDO_SORTIDO[CONT_SORTIDO],4,6))  + 
                                           Spaces(1) + Format("W11",SubStr(PEDIDO_SORTIDO[CONT_SORTIDO],10,6)) +
                                           Spaces(1) + "?? PEDIDO ANTERIOR NAO ENCONTRADO NA DIGITACAO DOS PEDIDOS ??"
                          EndIf                  
                  EndIf                                          
                                                       
                  Print File ARQIMP PEDIDO+"\n"
                  STOP_SORTIDO = STOP_SORTIDO - 1
                  If STOP_SORTIDO = 0
                     Then QuitLoop
                  EndIf   
                  If NLINHA >= 60 And STOP_SORTIDO > 0 
                     Then Print File ARQIMP "\f"
                          Cabecalho_S("")
                  EndIf
                EndWhile
                ClearAll            
           
                View "\\Sistemas\\Vendas\\PedidoI"
                Coedit "\\Sistemas\\Vendas\\PedidoG"
                ;---- Gera PedidoI -------------------------------------
                For out From 1 To DynArraySize(PEDIDO_SORTIDO)
                  If PARAM_PEDIDO_ORIGINAL
                     Then PEDIDO = SubStr(PEDIDO_SORTIDO[out],10,6) 
                     Else PEDIDO = SubStr(PEDIDO_SORTIDO[out],04,6)
                          Moveto "\\Sistemas\\Vendas\\PedidoI"
                          Moveto [Numero do Pedido]
                          Locate PEDIDO
                          If RetVal
                             Then While PEDIDO = [Numero do Pedido]
                                    Del
                                    Locate Next PEDIDO
                                    If Not RetVal Then QuitLoop EndIf
                                  EndWhile
                          EndIf                    
                  EndIf                
                  Gera_PedidoI(PEDIDO)
                EndFor
                Do_it!
                ClearAll
                ;-------------------------------------------------------           
                                
                Copia_Sort_Agrup("Desmembrado")
           
                PDFZEBRA=False
                DISPOSITIVO_OPCAO="V"
                ImpriArq(ARQIMP)       
        EndIf   
        
   Else Mensagem("Ocorreu erro no processo !")      
EndIf    
ClearAll

EndProc ;Monta_Pedidos_S()

;*******************************************************************************
;* Rotina p/ voltar pedidos originais de grade   #PARAM_PEDIDO_ORIGINAL=False# * 
;* Os quais foram desmembrados pelo processo de Sortimento por Cores           *
;*******************************************************************************
Proc Reversao_PedidoG()
Private PED_REV, CONT_PEDREV, i, TabelaG
ClearAll

If IsEmpty("PedidoGT")
   Then Return False
EndIf

CONT_PEDREV = 0
DynArray PED_REV[]

VSDGEMPRESA = ""
VSDGNOMEMP  = ""
VSDGDTINI   = BlankDate()
VSDGDTFIM   = BlankDate()

While True
  Echo Normal
  Echo Off  
  ShowDialog "ReversÆo de Pedidos Desmembrados - Sortidos" 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 11 Width 55
  
    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA
    Accept @ 01,09 Width 28 "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 21 "A20" Picture "!*!" Tag "TG_PEDIDO" To VSDGNOMPEDIDO
    
  	Label  @ 04,00 "Per¡odo Referente por Data Emiss„o" 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_DTFIM3"
  	Accept @ 05,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM3" To VSDGDTFIM
                                        
  	Pushbutton @ 07,15 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
  	Pushbutton @ 07,28 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
  EndDialog
  
  If Not RetVal 
     Then MSG = "Processo Abortado !" 
          Return False 
  EndIf
  
  If IsBlank(VSDGDTFIM) And IsBlank(VSDGPEDIDO)
     Then Mensagem("Data Final inv lida !")
          Loop
  EndIf      
  
  If Not Carrega_Parametros() 
     Then MSG = "Processo Abortado !"
          Return False  
  EndIf
  
  If Not IsBlank(VSDGPEDIDO)
     Then VSDGDTINI = BlankDate()       
          VSDGDTFIM = BlankDate()
  EndIf
  QuitLoop
EndWhile 

Do_It!
ClearAll

Aguarde("Aguarde, selecionando pedidos sortidos ")

{Ask} {PedidoC}
Moveto [Numero do Pedido       ] TypeIn "_Ped, ~VSDGPEDIDO.."
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
If VSDGDTINI<>BlankDate() Or VSDGDTINI<>BlankDate()
   Then Moveto [Data de Emissao] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
EndIf   
Moveto [Situacao do Pedido     ] TypeIn "ABERTO"
{Ask} {PedidoGT} Check
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return False
EndIf   

TabelaG = Cria_Temp(PrivDir())
Copy "Answer" TabelaG

{Ask} TypeIn TabelaG Enter
Moveto [Numero do Pedido       ] Check TypeIn "_Ped"
{Ask} {PedidoI} 
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Quantidade Faturada    ] TypeIn "Calc Sum as Quantidade Faturada"
{Ask} {PedidoC} 
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Observacao do Pedido   ] Check 
Do_It!
ClearAll

NR=NRecords("Answer") 
View TabelaG
CoEdit "Answer"
Scan
  Barra(NR, RecNo())
  Aguarde("Consultando pedidos em ABERTO/FATURADO "+BARRA_STRING)

  If [Quantidade Faturada] > 0
     Then Moveto TabelaG
          Moveto [Numero do Pedido]
          Locate [Answer->Numero do Pedido]
          If RetVal
             Then While [Numero do Pedido] = [Answer->Numero do Pedido]
                    Del
                  EndWhile  
          EndIf
          Moveto "Answer"
  EndIf
  
  If Search ("[**PEDIDO SORTIDO DESMEMBRADO",[Observacao do Pedido])=0
     Then Moveto TabelaG
          Moveto [Numero do Pedido]
          Locate [Answer->Numero do Pedido]
          If RetVal
             Then While [Numero do Pedido] = [Answer->Numero do Pedido]
                    Del
                  EndWhile  
          EndIf
  EndIf
  
  Moveto "Answer"
EndScan  
Do_It!
ClearAll

If IsEmpty(TabelaG)
   Then Return False
EndIf   

{Ask} TypeIn TabelaG Enter
Moveto [Numero do Pedido       ] TypeIn "_Ped"
{Ask} {PedidoG} TypeIn "Fast Delete" Enter
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Do_It!
ClearAll

Add TabelaG "PedidoG"

{Ask} TypeIn TabelaG Enter
Moveto [Numero do Pedido] Check
Do_It!
ClearAll

ARQIMP=PrivDir()+"PED_AC.Txt"
If IsFile(ARQIMP)
   Then Deleta_Arquivo(ARQIMP)
EndIf

NR = NRecords("Answer")

View "\\Sistemas\\Vendas\\PedidoI"
View "\\Sistemas\\Vendas\\PedidoG"  
View "\\Sistemas\\Vendas\\PedidoC"
Coedit "Answer"
Scan  
  Barra(NR, RecNo())
  Aguarde("Aguarde, revertendo pedidos sortidos "+BARRA_STRING)
               
  CONT_PEDREV = CONT_PEDREV+1                 
  Moveto "\\Sistemas\\Vendas\\PedidoC"
  Moveto [Numero do Pedido]
  Locate [Answer->Numero do Pedido]
  If ReTval
     Then PosI = Search ("[**PEDIDO SORTIDO DESMEMBRADO",[Observacao do Pedido])
          If PosI >0
             Then OBS = [Observacao do Pedido]
                  PosF = Search ("**]",[Observacao do Pedido])
                  OBS = SubStr(OBS,1,PosI-1)+SubStr(OBS,PosF+3,Len(OBS))
                  [Observacao do Pedido] = OBS
                  UnLockRecord
          EndIf                                               
          PED_REV[CONT_PEDREV] = Format("W6",[Numero do Pedido])+"  "+Format("W35",[Codigo]+" "+[Razao Social])+"  "+
                                 Format("D13",[Data de Emissao])+"  "+Format("W15",[Situacao do Pedido])
          ;---- Gera PedidoI -------------------------------------------------                       
          Gera_PedidoI([Answer->Numero do Pedido])                       
          ;-------------------------------------------------------------------                        
     Else PED_REV[CONT_PEDREV] = Format("W6",[Numero do Pedido])+"      ** NAO FOI LOCALIZADO O PEDIDO"
  EndIf
  Moveto "Answer"
EndScan
Do_It!
ClearAll

NLINHA = 8
For i From 1 To DynArraySize(PED_REV)
  If NLINHA=8
     Then Print File ARQIMP Chr(27)+Chr(77)
          Print File ARQIMP Chr(27)+Chr(48)
          Print File ARQIMP "\n\n"
          Print File ARQIMP Fill("-",94)+"\n"
          Print File ARQIMP Format("W94,AC","REVERSAO DE PEDIDOS COM GRADE")+"\n"
          Print File ARQIMP Fill("-",94)+"\n"
          Print File ARQIMP "\n"
          Print File ARQIMP "Pedido  Cliente                              Dt Emissao  Situacao       "+"\n"
          Print File ARQIMP "------  -----------------------------------  ----------  ---------------"+"\n"
  EndIf
  NLINHA = NLINHA + 1
  Print File ARQIMP PED_REV[i]+"\n"
  If NLINHA >= 60 Then NLINHA = 8 EndIf   
EndFor

Return True

EndProc ;Reversao_PedidoG()

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

GetRecord "\\Sistemas\\Cadastro\\Empresas" VSDGEMPRESA To REG_PPEDIDO
If Not RetVal
   Then MSG="Sem parametros para essa empresa !"
        Return False
   Else UFD        =REG_PPEDIDO["UF Empresa"]
        TPEMPR     =REG_PPEDIDO["Tipo da Empresa"]
        ATIVEMPRESA=REG_PPEDIDO["Atividade"]    
EndIf        

If IsEmpty("\\Sistemas\\Vendas\\P_Pedido")
   Then MSG="N„o esta configurado os parametros para digita‡„o !"
        Return False
EndIf

GetRecord "\\Sistemas\\Vendas\\P_Pedido" VSDGEMPRESA To REG_PPEDIDO
If Not RetVal
   Then MSG="Parametros n„o cadastrado para esta Empresa !"
        Return False
EndIf

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 para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITAC()
If RecordStatus("Locked") Then UnLockRecord EndIf         
Endproc

;*******************************************************************************
;* 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: 
          If Campo="TG_DTFIM3" Then Campo="TG_DTFIM"  EndIf
          Dialog_F1()
          If Campo="TG_DTFIM"  Then Campo="TG_DTFIM3" EndIf
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_REPRESEN"      : 
                 Switch
                   Case PARAM_DESMEMBRAMENTO="A"  : Campo = "TG_REGRA"  
                   OtherWise                      : Campo = "TG_EMPRESA"
                 EndSwitch   
            Case Campo="TG_REGRA"         : Campo="TG_EMPRESA"
						Case Campo="TG_PEDIDO"        : Campo="TG_EMPRESA"
						Case Campo="TG_OPDT"          :
						     Switch
                   Case PARAM_DESMEMBRAMENTO="AC" : Campo="TG_PEDIDO"       
                   OtherWise                      : Campo="TG_REPRESEN"
                 EndSwitch
            Case Campo="TG_DTINI"         : Campo="TG_OPDT"
						Case Campo="TG_DTFIM3"        : Campo="TG_DTINI"   
						Case Campo="TG_FINALIDADE"    : Campo="TG_DTFIM3"
            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" :  
                         If VSDGEMPRESA="0000" Or VSDGEMPRESA="" 
                            Then Campo       = "TG_EMPRESA" 
                                 VSDGEMPRESA = ""
                                 VSDGNOMEMP  = ""
                            Else Switch
                                   Case PARAM_DESMEMBRAMENTO="AC" : Campo="TG_PEDIDO"
                                   Case PARAM_DESMEMBRAMENTO="A"  : Campo="TG_REGRA"
                                   OtherWise                      : Campo="TG_REPRESEN"
                                 EndSwitch   
                         EndIf
                    Case Campo="TG_PEDIDO" : Campo="TG_DTINI"
                         If Not IsBlank(VSDGPEDIDO)
                            Then VSDGDTINI = BlankDate()       
                                 VSDGDTFIM = BlankDate()
                                 Campo="YES"
                         EndIf
                    Case Campo="TG_REGRA"  : Campo="TG_REPRESEN"
                         If PARAM_DESMEMBRAMENTO="A"
                            Then If IsBlank(VSDGREGRA)
                                    Then Mensagem("Ser  preciso informar a regra de agrupamento !")
                                         Campo = "TG_REGRA"
                                EndIf
                           Else VSDGREGRA = ""              
                         EndIf  
                    Case Campo="TG_REPRESEN"   : Campo="TG_OPDT" 
                    Case Campo="TG_OPDT"       : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"      : Campo="TG_DTFIM3"
                    Case Campo="TG_DTFIM3"     : Campo="TG_FINALIDADE"
                                VSDGDTFIM= ControlValue("TG_DTFIM3")
                                If PARAM_DESMEMBRAMENTO="AC" 
                                   Then If IsBlank(VSDGDTFIM) And IsBlank(VSDGPEDIDO) 
                                           Then Mensagem("Data Final inv lida !")
                                                Campo="TG_DTFIM3"
                                        EndIf
                                   Else If IsBlank(VSDGDTFIM) And (Not IsBlank(VSDGREPRESEN) Or Not IsBlank(VSDGDTINI)) 
                                           Then Mensagem("Data Final inv lida !")
                                                Campo="TG_DTFIM3"
                                        EndIf        
                                EndIf   
                                If Campo<>"TG_DTFIM3"
                                   Then If (IsAssigned(VSDGDTINI) And IsAssigned(VSDGDTFIM)) And Not IsBlank(VSDGDTFIM)
                                           Then SYS_DTINI=VSDGDTINI
                                                SYS_DTFIM=VSDGDTFIM
                                                 
                                                Editor Open "Savevars.sc"
                                                Editor Find "SYS_DTINI"
                                                If RetVal
                                                   Then DELETELINE
                                                        ENTER
                                                        UP
                                                        TypeIn "SYS_DTINI = "
                                                        If IsBlank(SYS_DTINI)
                                                           Then TypeIn "BlankDate()"
                                                           Else TypeIn SYS_DTINI
                                                        Endif   
                                                        DOWN
                                                EndIf
                                                CtrlPgUp
                                                Editor Find "SYS_DTFIM"
                                                If RetVal
                                                   Then DELETELINE
                                                        ENTER
                                                        UP
                                                        TypeIn "SYS_DTFIM = "
                                                        If IsBlank(SYS_DTFIM)
                                                           Then TypeIn "BlankDate()"
                                                           Else TypeIn SYS_DTFIM
                                                        Endif   
                                                        DOWN
                                                EndIf
                                                Do_It!
                                        EndIf   
                                        If PARAM_DESMEMBRAMENTO="AC" 
                                           Then Campo="YES"
                                        EndIf   
                                EndIf
                    Case Campo="TG_FINALIDADE" : Campo="YES"
									EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
	Case Campo="":
		 MSG_CAMPO=""
	Case Campo="TG_FINALIDADE" :	 
	     MensagemRadioButtons()
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc
                     
;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Proc"
Sys_Valor()
If Not IsAssigned(SYS_CHAPA_USUARIO)     Then SYS_CHAPA_USUARIO     = "9999" EndIf
If Not IsAssigned(PARAM_DESMEMBRAMENTO)  Then PARAM_DESMEMBRAMENTO  = ""     EndIf
If Not IsAssigned(PARAM_PEDIDO_ORIGINAL) Then PARAM_PEDIDO_ORIGINAL = False  EndIf
If Not IsAssigned(PARAM_BLOQUEIA_PEDIDO) Then PARAM_BLOQUEIA_PEDIDO = False  EndIf
If Not IsAssigned(PARAM_ACERTA_SORTIDOS) Then PARAM_ACERTA_SORTIDOS = False  EndIf
                             
ROTINA_LIBERADA = False       
Switch                                                                                      
  Case PARAM_DESMEMBRAMENTO="S" And (SYS_CODIGO_CLIENTE="0222" Or 
                                     SYS_CODIGO_CLIENTE="0232" Or
                                     SYS_CODIGO_CLIENTE="0425" Or  
                                     SYS_CHAPA_USUARIO ="9999") : ROTINA_LIBERADA = True
  Case PARAM_DESMEMBRAMENTO="A" And (SYS_CODIGO_CLIENTE="0227" Or 
                                     SYS_CHAPA_USUARIO ="9999") : ROTINA_LIBERADA = True
EndSwitch

;---- REGRAS CONFORME UTILIZACAO -----------------------------------------------
Switch
  Case SYS_CODIGO_CLIENTE="0232" : REGRA_SEMSORT_ITEMCOMCOR = True
  ;Case SYS_CODIGO_CLIENTE = ""   : PARAM_PEDIDO_ORIGINAL = True                ;Criar um novo pedido ou manter o pedido original
  OtherWise                      : REGRA_SEMSORT_ITEMCOMCOR = False
EndSwitch  

;---- Para bloquear pedidos que possuem 1 ou mais referˆncias sem cores --------
If PARAM_DESMEMBRAMENTO="A" Then PARAM_BLOQUEIA_PEDIDO = True EndIf

;---- Dispon¡vel apenas para o CODIGO #0227# - #0222# - #0232# - #0425# --------
If Not ROTINA_LIBERADA
   Then Mensagem("Rotina indispon¡vel !//Verificar com o Suporte VISE !")
        Return
EndIf              

If PARAM_ACERTA_SORTIDOS And PARAM_DESMEMBRAMENTO="S"  
   Then MSG = ""
        PARAM_DESMEMBRAMENTO="AC"
        If Reversao_PedidoG()
           Then PDFZEBRA=False
                DISPOSITIVO_OPCAO="V"
                ImpriArq(ARQIMP)
                MSG = "Processo de revers„o de pedidos de grade conclu¡do !"
           Else If MSG = ""
                   Then MSG = "N„o h  pedidos desmembrados para executar a revers„o de pedidos de grade !"
                EndIf   
        EndIf         
        Mensagem(MSG)
        Return
EndIf

LC              = 45
VSDGREG         = ""          
VSDGEMPRESA     = ""  
VSDGNOMEMP      = ""
VSDGNOMPEDIDO   = ""
VSDGDTINI       = BlankDate()
VSDGDTFIM       = BlankDate() 
VSDGFINAL       = 3

If PARAM_DESMEMBRAMENTO="A"
   Then VSDGOPDT = "2" 
   Else VSDGOPDT = "1"
EndIf  

If PARAM_DESMEMBRAMENTO="A"  
   Then Titulo = "Desmembramento de Pedidos c/ Itens Agrupados"
        LG = 35
        If IsFile("P_REGRA.sc") Then Play "P_REGRA" EndIf
   Else Titulo = "Desmembramento de Pedidos c/ Itens Sortidos"
        LG = 80
        VSDGREGRA = ""
EndIf   

While True
  Echo Normal
  Echo Off  
  ShowDialog Titulo 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 14 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  @ 00,LG   "N§ Agrupamento"  For "TG_REGRA"
    Accept @ 01,LG+1 Width 14 "A12" Picture "#*#" Tag "TG_REGRA" To VSDGREGRA
  
    Label  @ 02,00 "Representante"  For "TG_REPRESEN"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN" To VSDGREPRESEN
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMREPR"  To VSDGNOMREPR 
    
;   Label  @ 04,00 "Op‡”es de Datas"  For "TG_OPDT"
;   RadioButtons @ 05,00 Height 2 Width 33
;    "~E~miss„o",
;    "~I~nclus„o"
;    Tag "TG_OPDT"
;    To VSDGOPDT

    Label  @ 04,00 "Op‡äes de Datas" For "TG_OPDT"
    Accept @ 05,04 Width 04 "A1"   Picture "1,2" Tag "TG_OPDT" To VSDGOPDT
    Accept @ 05,09 Width 25 "A20"  Picture "!*!" Tag "TG_NOMOPDT" To VSDGDESCOPDT
                 
    Label  @ 06,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 07,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 07,16 "at‚" For "TG_DTFIM3"
    Accept @ 07,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM3" To VSDGDTFIM
                        
    Label @ 00,35 "Situa‡„o do Pedido" For "TG_FINALIDADE"
    RadioButtons @ 01,36 Height 4 Width 28
      "~1~ SUSPENSO",
      "~2~ ABERTO",
      "~3~ AMBOS"
        Tag "TG_FINALIDADE"
        To VSDGFINAL                     
    
    ;@ 10,LC ?? VSDGREG
    ;PaintCanvas Attribute 26 10,33,10,57         
                     
  	Pushbutton @ 10,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
  	Pushbutton @ 10,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If Not Carrega_Parametros() 
     Then QuitLoop 
  EndIf
  
  If PARAM_DESMEMBRAMENTO="A"  
     Then FileWrite "P_REGRA.sc" From "VSDGREGRA="+VSDGREGRA+"\n"
          PARAM_REGRA = NumVal(VSDGREGRA)
  EndIf   
  
  ;---- Criando pastas p/ armazenamento de arquivo gerado ----------------------
  Aguarde("Aguarde, criando pasta -> Note ")
  VSDGDRIVE=SubStr(Directory(),1,2)
  VSDGPASTA="\\Note"
  If DirExists(VSDGPASTA)=0
     Then Cria_Pasta(VSDGPASTA)
          Sleep 2000
  EndIf
  
  Aguarde("Aguarde, criando pasta -> Pedidos")
  VSDGPASTA="\\Note\\Pedidos"
  If DirExists(VSDGPASTA)=0
     Then Cria_Pasta(VSDGPASTA)
          Sleep 2000
  EndIf
  
  Switch
    Case PARAM_DESMEMBRAMENTO = "S" : TIPO="Sortidos"
    Case PARAM_DESMEMBRAMENTO = "A" : TIPO="Agrupado"
  EndSwitch
  
  Aguarde("Aguarde, criando pasta -> "+TIPO)
  VSDGPASTA="\\Note\\Pedidos\\"+TIPO
  If DirExists(VSDGPASTA)=0
     Then Cria_Pasta(VSDGPASTA)
          Sleep 2000
  EndIf  
  
  Aguarde("Aguarde, criando pasta -> Ped_Orig ")
  VSDGPASTA="\\Note\\Pedidos\\"+TIPO+"\\Ped_Orig"
  If DirExists(VSDGPASTA)=0
     Then Cria_Pasta(VSDGPASTA)
          Sleep 2000
  EndIf
  
  Aguarde("Aguarde, criando pasta -> Ped_Desm ")
  VSDGPASTA="\\Note\\Pedidos\\"+TIPO+"\\Ped_Desm"
  If DirExists(VSDGPASTA)=0
     Then Cria_Pasta(VSDGPASTA)                                         
          Sleep 2000
  EndIf
  
  DIA  = AlinhM(StrVal(Day(Today())),2)+AlinhM(StrVal(Month(Today())),2)+StrVal(Year(Today()))
  HORA = Substr(Time(),1,2)+Substr(Time(),4,2)+Substr(Time(),7,2)
  
  PASTA_A="\\Note\\Pedidos\\"+TIPO+"\\Ped_Orig"
  PASTA_B="\\Note\\Pedidos\\"+TIPO+"\\Ped_Desm"
  
  Switch
    Case PARAM_DESMEMBRAMENTO="S" : VSDGREG = "** SORTIDO"
                                    LC = 45
    Case PARAM_DESMEMBRAMENTO="A" : VSDGREG = "** AGRUPAMENTO"
                                    LC = 43
  EndSwitch
  
  ARQA = ""
  ARQB = ""
  
  LimpaRodape(0)
  Aguarde("Aguarde, selecionando registros ")
  ClearAll
    
  CHAVE = -1                       
  TabelaRP = Cria_Temp(PrivDir())
  MSG = "N„o existem registros conforme sele‡„o !"
  Copy "\\Base\\Sistemas\\Estoque\\RPedidos" TabelaRP
  
  Tabela_Temp = Cria_Temp(PrivDir())
  Copy TabelaRP Tabela_Temp
  
  If IsBlank(VSDGREPRESEN) And VSDGDTINI = BlankDate() And VSDGDTFIM = BlankDate() 
     Then
     Else If Not Seleciona_Pedidos(PARAM_DESMEMBRAMENTO) Or IsEmpty(TabelaRP)
             Then Mensagem(MSG)
                  Loop
          EndIf                
  EndIf 
    
  View "\\Sistemas\\Vendas\\Ped_regi"
  View "\\Sistemas\\Vendas\\PedidoI"                    
  CoEdit TabelaRP
  PickForm "F"
  While True
    CHAVE()
    If CHAVE=9
       Then QuitLoop
    EndIf
    Controla_EdicaoC()
  EndWhile  
  Do_It!
  ClearAll       
EndWhile
Release Vars All 
Release Procs All
