;** AC_SORT ********************************************************************
;*  Rotina p/ Acerto de Itens SORTIDOS                                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 12/06/2015 por Bruno Carvalho
;Ultima Alteracao: 20/05/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes GetRecord "Iten_Com" -> [Producao Esgotada]
;Ultima Alteracao: 16/06/2016 por Bruno Carvalho 
;Motivo Alteracao: Alterado NUM_LANCTO = PROXLANCTO_NLANC -> Padroniza‡Æo da rotina de Numero_Lancamento()
;Ultima Alteracao: 14/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 27/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo usar condi‡Æo pagamento por item
;Ultima Alteracao: 18/10/2017 por Bruno Carvalho
;Motivo Alteracao: Removido de Gera_PedidoI() -> Aliquota Reduzida BCIPI, Valor IPI por Unidade, Condicao de Pagamento, Composicao de Diase 
;Ultima Alteracao: 18/10/2017 por Bruno Carvalho
;Motivo Alteracao: Removido de Monta_Pedidos() -> Codigo da Marca e Descricao da Marca
;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: 02/07/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado [Producao Esgotada] da tabela "Iten_Com" p/ a tabela "Itens"
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
  Moveto [Sequencia]
  End
  CODIGO=[Sequencia]
  Moveto [Sequencia]
  Down
  
  SetaCorRegistro("Editar")
  While true
      If Field()="Sequencia"
         Then Prompt " Esc=Sair  Alt+F=Fun‡”es"
         Else Prompt " Esc=Retornar  F1=Tabelas"
      EndIf

      Wait Field
           Until "ESC","ENTER","F7","HOME","UP","PGUP","F5","F6",
            -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140, -33
            
      If SubStr(RetVal,1,2)="-1"      
         Then SYS_TECLA_ACIONADA=RetVal 
              Seta_Tecla_Acionada()     
              RetVal="ESC"            
      EndIf    
      
      If RetVal=-33 
         Then Echo Normal
              Echo Off
              ShowPopup " Fun‡”es " CENTERED
               "~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="F6" :
           If IsEmpty(TabelaRP)
              Then Mensagem("N„o existem registros a processar !")
              Else Monta_Pedidos_S()     
                   CHAVE=9
                   Return
           EndIf
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME" And Field()="Sequencia":
           Del
           While True
               PAGINA(TabelaRP,"MR")
               CODIGO = [Sequencia]
               Switch
               Case EDITAR="S"  : FastMsg("Edi‡„o n„o permitida !")
               Case EXCLUIR="S" : Confirma()
                                  If OK="S"
                                     Then AUX_PED = [Numero do Pedido]
                                          Del
                                  EndIf
               OtherWise        : QuitLoop 
             EndSwitch
             PickForm "F"
             SetaPosForm()
           EndWhile
           QuitLoop    
      Case Retval="ESC": 
           ConfGeral("Deseja realmente sair da rela‡„o dos pedidos ?")
           If OK<>"S"
              Then QuitLoop   
           EndIf   
           CHAVE=9
           Del
           Return
      Case Retval="ENTER": 
           FastMsg("Inclus„o n„o permitida !")
           If IsBlank([])
              Then Loop
           EndIf
      EndSwitch
  EndWhile
EndWhile

EndProc ;CHAVE()

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

{Ask} {\\Sistemas\\Vendas\\PedidoC} 
Moveto [Numero do Pedido       ] Check TypeIn "_Ped, ~VSDGPEDIDO.."
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
If VSDGPEDIDO = ""
   Then Moveto [Data de Emissao] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
EndIf   
Moveto [Descricao da Destinacao] TypeIn "VEND.."
Moveto [Situacao do Pedido     ] TypeIn "SUSPENSO Or ABERTO"
Moveto [Observacao do Pedido   ] Check
;{Ask} {\\Sistemas\\Vendas\\PedidoG}
;Moveto [Numero do Pedido       ] TypeIn "_Ped"  
;Moveto [Quantidade Faturada    ] TypeIn "<=0"
Do_It!
ClearAll

DynArray PEDIDO_FATURADO[]

CONT = 0
CoEdit "Answer"
While True
  CONT = CONT + 1
  Barra(NRecords("Answer"), CONT)
  Aguarde("Aguarde, verificando itens sortidos "+BARRA_STRING)

  OBS_1 = "DESMEMBRADO" 
  If Search(OBS_1,Upper([Observacao do Pedido]))=0 
     Then Del
     Else Skip
  EndIf
  If Eot() Then QuitLoop EndIf
EndWhile
Do_it!
ClearAll

CONT = 0
Tabela=Cria_Temp(PrivDir())
Copy "Answer" Tabela

;--- PedidoI Faturado -----------------------------------------------
{Ask} TypeIn Tabela Enter
Moveto [Numero do Pedido   ] Check TypeIn "_Ped"
{Ask} {\\Sistemas\\Vendas\\PedidoI}
Moveto [Numero do Pedido   ] TypeIn "_Ped"
Moveto [Quantidade Faturada] TypeIn "Calc Sum as Quantidade Faturada"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Numero do Pedido   ] Check 
Moveto [Quantidade Faturada] TypeIn ">0"
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then View "Answer"
        Scan
          CONT = CONT + 1
          PEDIDO_FATURADO[CONT] = [Numero do Pedido]
        EndScan
        ClearAll
EndIf   
                
;--- PedidoG Faturado -----------------------------------------------
{Ask} TypeIn Tabela Enter
Moveto [Numero do Pedido   ] Check TypeIn "_Ped"
{Ask} {\\Sistemas\\Vendas\\PedidoG}
Moveto [Numero do Pedido   ] TypeIn "_Ped"
Moveto [Quantidade Faturada] TypeIn "Calc Sum as Quantidade Faturada"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Numero do Pedido   ] Check 
Moveto [Quantidade Faturada] TypeIn ">0"
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then View "Answer"
        Scan
          CONT = CONT + 1
          PEDIDO_FATURADO[CONT] = [Numero do Pedido]
        EndScan
        ClearAll
EndIf  

If DynArraySize(PEDIDO_FATURADO)>0
   Then Coedit Tabela
        For i From 1 To DynArraySize(PEDIDO_FATURADO)
          Barra(DynArraySize(PEDIDO_FATURADO),i)
          Aguarde("Aguarde, consultando pedidos faturados "+BARRA_STRING)
          Moveto [Numero do Pedido]
          Locate PEDIDO_FATURADO[i]
          If RetVal
             Then Del
          EndIf
          Home
        EndFor
        Do_it!
        ClearAll
EndIf   

Rename Tabela "Answer"

SEQ = 0
NR = NRecords("Answer")

Empty TabelaRP

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 IsEmpty("Answer")
   Then MSG = "N„o h  sele‡„o de pedidos !"
        Return False
EndIf

Return True

EndProc ;Seleciona_Pedidos()

;*******************************************************************************
;* 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              ]=RegPed["Preco Total"]
    [Preco Unitario Tabela    ]=RegPed["Preco Unitario Tabela"]
    [Taxa Desconto Total      ]=RegPed["Taxa Desconto Total"]
    [Valor Desconto Total     ]=RegPed["Valor Desconto Total"]
    [Peso Liquido             ]=RegPed["Peso Liquido"]
    [Peso Embalagem           ]=RegPed["Peso Embalagem"]
    [Volumes                  ]=RegPed["Volumes"]
    [Codigo da Tabela         ]=RegPed["Codigo da Tabela"]                                         
    [Tipo Tributacao          ]=RegPed["Tipo Tributacao"]      
    [CFO                      ]=RegPed["CFO"]
  
    [Tributacao de ICMS       ]=RegPed["Tributacao de ICMS"]
    [Aliquota Reduzida BCICMS ]=RegPed["Aliquota Reduzida BCICMS"]
    [Aliquota de ICMS         ]=RegPed["Aliquota de ICMS"]
    [Valor do ICMS            ]=RegPed["Valor do ICMS"]

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

    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 para Montar Grade dos Itens do Pedido                                *
;*******************************************************************************
Proc Monta_Array_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_Array_Grade()

;*******************************************************************************
;* Rotina p/ Remontar Pedidos Sortidos                                         *
;*******************************************************************************
Proc Monta_Pedidos()
;FAZER DPS RELACAO DE PEDIDOS FATURADOS

DynArray SEM_PRECO[]

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

If IsEmpty("Answer")
   Then Mensagem("N„o foi localizado pedidos de grade!") 
        Return False
EndIf    

Tabela_Aux = Cria_Temp(PrivDir())
Copy "Answer" Tabela_Aux
Tabela_G   = Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Vendas\\PedidoG" Tabela_G
Empty Tabela_G

Tabela_R = Cria_Temp(PrivDir())
{Ask} TypeIn Tabela_G Enter
Moveto [Codigo do Item] Check
Moveto [Referencia    ] Check
Do_it!
ClearAll
Copy "Answer" Tabela_R

{Ask} TypeIn Tabela_Aux Enter
Moveto [Referencia] Check
Do_It!
ClearAll

View "\\Sistemas\\Estoque\\Iten_Cor"
View Tabela_G
View Tabela_R
Coedit "Answer"
Scan      
  Barra(NRecords("Answer"),RecNo())
  Aguarde("Aguarde, Montando a Rela‡„o dos Itens "+BARRA_STRING)
  REF  = [Referencia]
  Switch
    Case Len(REF)=3 : ITEM = "02"+REF+"00000"                                   ;"APENAS PARA 0222"
    Case Len(REF)=4 : ITEM = "02"+REF+"0000"                                    ;"APENAS PARA 0222"
    OtherWise       : Loop  
  EndSwitch
  Moveto "\\Sistemas\\Estoque\\Iten_Cor"
  Moveto [Codigo do Item]
  Locate ITEM
  If RetVal
     Then While ITEM = [Codigo do Item]
            If Search("SORT",[Descricao da Cor_Tecido])>0
               Then COR = [Codigo da Cor_Tecido]
                    Moveto Tabela_G
                    Moveto [Codigo do Item]
                    Ativa_Lookup()
                    Moveto [Referencia]
                    Locate IndexOrder by "refcor_01" REF, "P", COR
                    If RetVal
                       Then CopyToArray REG_BUSCA_LOOKUP
                            ITEM_AUX = REG_BUSCA_LOOKUP["Codigo do Item"]
                       Else ITEM_AUX = ""
                    EndIf   
                    KeyPress "ESC"
                    If ITEM_AUX<>""
                       Then Moveto Tabela_R
                            End Down
                            [Codigo do Item] = ITEM_AUX
                            [Referencia    ] = REF
                            UnLockRecord
                    EndIf        
                    QuitLoop
            EndIf   
            Skip
            If Eot() Then QuitLoop EndIf
          EndWhile
  EndIf   
  Moveto "Answer"
EndScan
Do_it!
Clearall

{Ask} TypeIn Tabela_Aux Enter
Moveto [Numero do Pedido] Check
Moveto [Referencia      ] Check
Moveto [Qtd1            ] TypeIn "Calc Sum as Qtd1"
Moveto [Qtd2            ] TypeIn "Calc Sum as Qtd2"
Moveto [Qtd3            ] TypeIn "Calc Sum as Qtd3"
Moveto [Qtd4            ] TypeIn "Calc Sum as Qtd4"
Moveto [Qtd5            ] TypeIn "Calc Sum as Qtd5"
Moveto [Qtd6            ] TypeIn "Calc Sum as Qtd6"
Moveto [Qtd7            ] TypeIn "Calc Sum as Qtd7"
Moveto [Qtd8            ] TypeIn "Calc Sum as Qtd8"
Moveto [Qtd9            ] TypeIn "Calc Sum as Qtd9"
Moveto [Qtd10           ] TypeIn "Calc Sum as Qtd10"
Moveto [Qtd11           ] TypeIn "Calc Sum as Qtd11"
Moveto [Qtd12           ] TypeIn "Calc Sum as Qtd12"
Moveto [Quantidade      ] TypeIn "Calc Sum as Quantidade" 
Do_It!
ClearAll

SEQ = 0
PED = "***"
CONT_SEM_PRECO = 0

View "\\Sistemas\\Vendas\\PedidoG"
View Tabela_R
View Tabela_G
Coedit "Answer"
Scan
  Barra(NRecords(Tabela_Aux),RecNo())
  Aguarde("Aguarde, Montando a Rela‡„o dos Itens "+BARRA_STRING)
  
  If PED <> [Numero do Pedido]
     Then PED   = [Numero do Pedido]
          SEQ = 0
          GetRecord "\\Sistemas\\Vendas\\PedidoC" PED To REG_PEDIDO
          If RetVal
             Then ATUALIZA_PED = True
             Else ATUALIZA_PED = True
          EndIf
  EndIf   
  
  SEQ   = SEQ + 1
  REF   = [Referencia] 
  QTD1  = [Qtd1]
  QTD2  = [Qtd2]
  QTD3  = [Qtd3]
  QTD4  = [Qtd4]
  QTD5  = [Qtd5]
  QTD6  = [Qtd6]
  QTD7  = [Qtd7]
  QTD8  = [Qtd8]
  QTD9  = [Qtd9]
  QTD10 = [Qtd10]
  QTD11 = [Qtd11]
  QTD12 = [Qtd12]
  Quantidade = [Quantidade]
  
  Moveto Tabela_R
  Moveto [Referencia]
  Locate REF
  If RetVal
     Then COD   = [Codigo do Item]
     Else Moveto "Answer"
          Loop
  EndIf   
  
  GetRecord "\\Sistemas\\Estoque\\Itens" COD To REG_ITEM
  If RetVal
     Then ATUALIZA_ITENS = True
     Else ATUALIZA_ITENS = True
  EndIf
  
  Moveto Tabela_G
  End Down
  [Numero do Pedido] = PED
  [Item do Pedido  ] = SEQ
  [Codigo do Item  ] = COD
  [Tipo do Item    ] = "P"
  [Qtd1            ] = QTD1 
  [Qtd2            ] = QTD2 
  [Qtd3            ] = QTD3 
  [Qtd4            ] = QTD4 
  [Qtd5            ] = QTD5 
  [Qtd6            ] = QTD6 
  [Qtd7            ] = QTD7 
  [Qtd8            ] = QTD8 
  [Qtd9            ] = QTD9 
  [Qtd10           ] = QTD10
  [Qtd11           ] = QTD11
  [Qtd12           ] = QTD12
  [Quantidade      ] = Quantidade
  
  If ATUALIZA_ITENS
     Then If ATUALIZA_PED
             Then TAB_PR = REG_PEDIDO["Codigo da Tabela"]
                  If TAB_PR<>""
                     Then GetRecord "\\Sistemas\\Vendas\\TbPrIte" TAB_PR,PegaCodigoRaiz(COD) To TBPRECO
                          If RetVal
                             Then [Preco Unitario       ] = TBPRECO["Preco Unitario"]
                                  [Preco Unitario Tabela] = TBPRECO["Preco Unitario"]
                          EndIf        
                  EndIf
                  [CFO] = REG_PEDIDO["CFO"]
          EndIf       
          If [Preco Unitario]=BlankNum() Or [Preco Unitario]<=0
             Then PR_UNIT = BlankNum()
                  Moveto "\\Sistemas\\Vendas\\PedidoG"
                  Moveto [Numero do Pedido]
                  Locate PED
                  If RetVal
                     Then While PED = [Numero do Pedido]
                            If [Referencia]=REF
                               Then PR_UNIT = [Preco Unitario]
                                    QuitLoop
                            EndIf   
                            Skip
                            If Eot() Then QuitLoop EndIf
                          EndWhile
                  EndIf
                  
                  CONT_SEM_PRECO = CONT_SEM_PRECO + 1
                  SEM_PRECO[CONT_SEM_PRECO] = [Numero do Pedido]
                  
                  ;If PR_UNIT = BlankNum()
                  ;   Then CONT_SEM_PRECO = CONT_SEM_PRECO + 1
                  ;        SEM_PRECO[CONT_SEM_PRECO] = [Numero do Pedido]
                  ;   Else [Preco Unitario       ] = PR_UNIT
                  ;        [Preco Unitario Tabela] = PR_UNIT    
                  ;EndIf
          EndIf 
          [Preco Total          ] = Quantidade * [Preco Unitario]
          [Unidade Fiscal       ] = REG_ITEM["Unidade Fiscal"]
          [Tributacao de ICMS   ] = REG_ITEM["Tributacao de ICMS"]
          [Tributacao de ISSQN  ] = REG_ITEM["Tributacao de ISSQN"]
          [Tipo Tributacao      ] = REG_ITEM["Tipo Tributacao"]
          [Codigo da Grade      ] = REG_ITEM["Codigo da Grade"]
          [IPI_CST              ] = REG_ITEM["IPI_CST"]
          [CSOSN                ] = REG_ITEM["CSOSN"]
          [NCM                  ] = REG_ITEM["NCM"]
          [PIS_CST              ] = REG_ITEM["PIS_CST"]
          [COFINS_CST           ] = REG_ITEM["COFINS_CST"]  
          UnLockRecord
  EndIf
  Moveto "Answer"
EndScan
Do_It!
ClearAll

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

Empty TabelaRP
ClearAll

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     

{Ask} TypeIn Tabela_G Enter 
Moveto [Numero do Pedido ] TypeIn "_Ped"         
{Ask} {\\Sistemas\\Vendas\\PedidoG} TypeIn "Delete" Enter
Moveto [Numero do Pedido ] TypeIn "_Ped"
Do_it!
ClearAll     

If Istable("Deleted")
   Then Rename "Deleted" "Bk_DelG"
EndIf

Add Tabela_G "\\Sistemas\\Vendas\\PedidoG"
             
Return True

EndProc ;Monta_Pedidos()
                                   
;*******************************************************************************
;* 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[]

View "\\Sistemas\\Vendas\\Ped_RegF"
View "\\Sistemas\\Vendas\\PedidoC"
View "\\Sistemas\\Estoque\\Iten_Cor"
View "\\Sistemas\\Vendas\\PedidoG"
View TabelaG
Coedit TabelaRP
Scan
   Barra(NR, RecNo())
   Aguarde("Aguarde, ajustando os itens "+BARRA_STRING)
   
   PEDIDO     = [Numero do Pedido]
   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             = PegaCodigoRaiz([Codigo do Item])
             VSD_I_REFERENCIA = [Referencia]
             
             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 ITEM_AUX = ""
                                               GRAD_AUX = ""
                                       EndIf   
                                       KeyPress "ESC"
                                       Moveto "\\Sistemas\\Estoque\\Iten_Cor"

                                       If ITEM_AUX <> ""
                                          Then Monta_Array_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

                             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
                                       
                                       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 QTD_AUX = QTD
                                               While QTD > 0
                                                 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
                                                   
                                                   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 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_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
                                                          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
                                  
                     Moveto TabelaG
                     End Down
                     CopyFromArray REG_ITEM
             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 "
              MSG = MSG + Completa("-> X:\\NOTE\\PEDIDOS\\SORTIDOS\\PED_ORIG\\"+ARQA,74," ")       
              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
          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)
             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("W8,AL","SEM COR:")+Spaces(1)+
                                    Format("W26,AL","REF: "+REG_PEDIDOG["Referencia"]+" "+REG_PEDIDOG["Descricao da Cor_Tecido"])
                            EndIf          
                    EndIf          
                  EndFor                  
          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
       
        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\\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
                  If Numero_Lancamento("Interno")
                     Then NLANC = PROXLANCTO_NLANC
                          Release Vars PROXLANCTO_NLANC
                  EndIf
                  
                  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   
                          
                          Moveto "\\Sistemas\\Vendas\\PedidoG"
                          Moveto [Numero do Pedido]
                          Locate NLANC_ORIGINAL
                          If RetVal
                             Then While True
                                    If [Numero do Pedido] = NLANC_ORIGINAL
                                       Then 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        
                  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 ---------------------------------------------------------
        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 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                                          
                                               
          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
        
        PDFZEBRA=False
        DISPOSITIVO_OPCAO="V"
        ImpriArq(ARQIMP)

        Imprime_Relatorio()
   Else Mensagem("Ocorreu erro no processo !")      
EndIf    
ClearAll

EndProc ;Monta_Pedidos_S()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Cabecalho()

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"
Print File ARQIMP Format("W93,AC",TITULO)+"\n"
Print File ARQIMP Fill("-",93)+"\n"
Print File ARQIMP "\n"

NLINHA = 10
Print File ARQIMP "Pedido Cliente                        Dt Emissao Situacao "+"\n"
Print File ARQIMP "------ ------------------------------ ---------- -------- "+"\n"
Print File ARQIMP "Empresa: "+VSDGEMPRESA+" "+VSDGNOMEMP+"\n\n" 

EndProc ;Cabecalho()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Imprime_Relatorio()

TITULO = "RELACAO DOS PEDIDOS COM ITENS FATURADOS"

For i From 1 To DynArraySize(PEDIDO_FATURADO)
  If i = 1 Then Cabecalho() EndIf
  PEDIDO = PEDIDO_FATURADO[i]
  GetRecord "\\Sistemas\\Vendas\\PedidoC" PEDIDO To REG_PEDIDO
  If RetVal
     Then NLINHA = NLINHA + 1
          Print File ARQIMP Format("W6",REG_PEDIDO["Numero do Pedido"])+Spaces(1) 
          Print File ARQIMP Format("W30",REG_PEDIDO["Codigo"]+""+REG_PEDIDO["Razao Social"])+Spaces(1)
          Print File ARQIMP Format("D13",REG_PEDIDO["Data de Emissao"])+Spaces(1)
          Print File ARQIMP Format("W8",REG_PEDIDO["Situacao do Pedido"])+"\n"
  EndIf
  If NLINHA >=60
     Then Print File ARQIMP "\f"
          Cabecalho()
  EndIf        
EndFor

TITULO = "RELACAO DOS PEDIDOS COM ITENS SEM PRECO UNITARIO"

For i From 1 To DynArraySize(SEM_PRECO)
  If DynArraySize(PEDIDO_FATURADO)>0 And i = 1
     Then Print File ARQIMP "\f"
  EndIf   
  If i = 1 Then Cabecalho() EndIf
  PEDIDO = SEM_PRECO[i]
  GetRecord "\\Sistemas\\Vendas\\PedidoC" PEDIDO To REG_PEDIDO
  If RetVal
     Then NLINHA = NLINHA + 1
          Print File ARQIMP Format("W6",REG_PEDIDO["Numero do Pedido"])+Spaces(1) 
          Print File ARQIMP Format("W30",REG_PEDIDO["Codigo"]+""+REG_PEDIDO["Razao Social"])+Spaces(1)
          Print File ARQIMP Format("D13",REG_PEDIDO["Data de Emissao"])+Spaces(1)
          Print File ARQIMP Format("W8",REG_PEDIDO["Situacao do Pedido"])+"\n"
  EndIf
  If NLINHA >=60
     Then Print File ARQIMP "\f"
          Cabecalho()
  EndIf    
EndFor

If DynArraySize(PEDIDO_FATURADO)>0 Or DynArraySize(SEM_PRECO)>0
   Then PDFZEBRA=False
        DISPOSITIVO_OPCAO="V"
        ImpriArq(ARQIMP)
EndIf        

EndProc ;Imprime_Relatorio()

;*******************************************************************************
;* 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 p/ sele‡Æo de filtro                                                 *
;*******************************************************************************
Proc Selecao_Pedidos()

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 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  @ 00,LG   "N§ Agrupamento"  For "TG_REGRA"
  Accept @ 01,LG+1 Width 14 "A12" Picture "#*#" Tag "TG_REGRA" To VSDGREGRA

  Label  @ 02,00 "Pedido"  For "TG_PEDIDO"
  Accept @ 03,01 Width 09 "A6"  Picture "[&,#][#*#]" Tag "TG_PEDIDO" To VSDGPEDIDO
  Accept @ 03,09 Width 26 "A24"  Picture "!*!" Tag "TG_NOMPEDIDO" 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_DTFIM"
	Accept @ 05,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
                  
	Pushbutton @ 07,14 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
	Pushbutton @ 07,27 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
EndDialog
If Not RetVal 
   Then Return False
   Else Return True  
EndIf

EndProc ;Selecao_Pedidos()    

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9   : Temp=False
     Case Evento["KeyCode"] = -59 : Dialog_F1()
     Case Evento["KeyCode"] =  27 :
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_PEDIDO"        : Campo = "TG_EMPRESA"   
            Case Campo="TG_REGRA"         : Campo="TG_EMPRESA"
						Case Campo="TG_DTINI"         : Campo="TG_PEDIDO"
						Case Campo="TG_DTFIM"         : Campo="TG_DTINI" 
            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 Campo="TG_PEDIDO"         
                         EndIf 
                    Case Campo="TG_REGRA" : Campo="TG_PEDIDO"
                         VSDGREGRA = ""  
                    Case Campo="TG_PEDIDO"  : Campo="TG_DTINI"
                         If VSDGPEDIDO <> ""
                            Then VSDGDTINI = BlankDate()
                                 VSDGDTFIM = BlankDate()
                                 Campo = "TG_FINALIDADE"
                         EndIf
                    Case Campo="TG_DTINI"      : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"      : Campo="YES"
									EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
	Case Campo="":
		 MSG_CAMPO=""
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_PEDIDO_ORIGINAL) Then PARAM_PEDIDO_ORIGINAL = False  EndIf
If Not IsAssigned(PARAM_BLOQUEIA_PEDIDO) Then PARAM_BLOQUEIA_PEDIDO = False  EndIf

ROTINA_LIBERADA = False       
Switch                                                                                      
  Case SYS_CODIGO_CLIENTE="0222" Or SYS_CODIGO_CLIENTE="0232" Or SYS_CHAPA_USUARIO ="9999" : ROTINA_LIBERADA = True
EndSwitch

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

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

Titulo    = "Desmembramento de Pedidos c/ Itens Sortidos"
LG        = 70
VSDGREGRA = ""

While True
   If TELA = 2
      Then TELA            = 1 
           VSDGEMPRESA     = ""  
           VSDGNOMEMP      = ""
           VSDGPEDIDO      = ""
           VSDGNOMPEDIDO   = ""
           VSDGDTINI       = BlankDate()
           VSDGDTFIM       = BlankDate()
  EndIf
                 
  If Not Selecao_Pedidos()
     Then QuitLoop 
  EndIf
  Carrega_Parametros()
  
  VSDGREG = "** SORTIDO"
  LC = 45
  
  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 Not Seleciona_Pedidos() Or IsEmpty(TabelaRP)
     Then Mensagem(MSG)
          Loop        
  EndIf 
    
  If Not Monta_Pedidos()
     Then QuitLoop 
  EndIf  
    
  CoEdit TabelaRP
  PickForm "F"
  While True
    CHAVE()
    If CHAVE=9 Or (CHAVE=5 And PARAM = 2)
       Then CHAVE=5
            QuitLoop
    EndIf
  EndWhile
  Do_It!
  ClearAll
  
  If CHAVE=5 
      Then Do_It!
           ClearAll
           RefreshDialog 
           Loop 
   EndIf
   If CHAVE=9 Then QuitLoop EndIf          
EndWhile

Release Vars All
Release Procs All
