;** PD_0397S *******************************************************************
;** Imprime a Digitacao dos Pedidos - Expedi‡Æo                                *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 15/08/2018 por Bruno Carvalho
;Ultima Altera‡„o:   /  /     por                                          
;Motivo Alteracao:                                             

;*******************************************************************************
;* ImpressÆo do Cabe‡alho                                                      *
;*******************************************************************************
Proc Cabecalho()

;************************** IMPRESSAO DO CABECALHO *****************************
If Not IsAssigned(NOMEMPRESA)
   Then NOMEMPRESA=""
EndIf
 
Moveto "Pedidoc"

PEDIDO   = [Numero do Pedido]
EMAIL    = ""
TELEFONE = ""
CELULAR  = ""
AREA     = ""

GetRecord "\\Sistemas\\Cadastro\\Destinat" [Codigo] To REG_DESTINAT
If RetVal
   Then EMAIL    = REG_DESTINAT["Endereco_Eletronico"]
        If Rtrim(REG_DESTINAT["Telefone"])<>""       Then TELEFONE = "Telefone: "+REG_DESTINAT["Telefone"]   EndIf
        If Rtrim(REG_DESTINAT["Celular"])<>""        Then CELULAR  = "  Celular: "+REG_DESTINAT["Celular"]   EndIf
        If Rtrim(REG_DESTINAT["Codigo da Area"])<>"" Then AREA     = "Area: "+REG_DESTINAT["Codigo da Area"] EndIf
EndIf

TIPO_PAGTO = Rtrim([Tipo de Pagamento])
If TIPO_PAGTO = "P"
   Then TIPO_PAGTO = "A PRAZO"
   Else TIPO_PAGTO = "A VISTA"
EndIf
   
Print File ARQIMP CI_8LPP
Print File ARQIMP CI_15CPP
Print File ARQIMP "\n\n"
Print File ARQIMP "\027F"

Print File ARQIMP Spaces(2)+Fill("-",127)+"\n"
Print File ARQIMP Spaces(2)+Format("W65","Pedido: "+PEDIDO)+"Vendedor: "+Format("W25",[Codigo do Representante]+" "+[Nome Fantasia Represent])+Spaces(5)
Print File ARQIMP           "Emissao : "+Format("D10",[Data de Emissao])+"\n"
Print File ARQIMP Spaces(2)+Fill("-",127)+"\n"

Print File ARQIMP Spaces(2)+"  Cliente: "+Format("W50",[Codigo]+" "+[Razao Social])+Format("W42","CNPJ: "+[CGC])+"IE: "+[IE]+"\n"
Print File ARQIMP Spaces(2)+" Endereco: "+Format("W50",[Endereco]+" - "+[Bairro])  +"  UF: "+[UF]+Spaces(28)+TELEFONE+"\n"
Print File ARQIMP Spaces(2)+"   Cidade: "+Format("W24",[Cidade])+Format("W25","CEP: "+[CEP])+Format("W36","Email: "+EMAIL)+CELULAR+"\n"
;Print File ARQIMP Spaces(2)+"Pagamento: "+Format("W40",[Descricao CondPagto])+Format("W50","Tipo Documento: "+TIPO_PAGTO)+AREA+"\n"

if kv>0
  then Print File ARQIMP Spaces(2)+s1+"\n"
endif                                      

Print File ARQIMP Spaces(2)+Fill("=",127)+"\n"

Print File ARQIMP "\027E"
Print File ARQIMP Spaces(2)+"Localizacao      Referencia    Quantidade  UN  Descricao do Produto"+"\n"
Print File ARQIMP Spaces(2)+"---------------  ----------  ------------  --  --------------------"+
                            "------------------------------------------------------------"+"\n"

Print File ARQIMP "\027E"

EndProc ;(Cabecalho)

;*******************************************************************************
;* ImpressÆo dos Itens                                                         *
;*******************************************************************************
Proc Itens()

Moveto "PedidoC"
Moveto [Numero do Pedido]
Do_It!

TABELA_TEMP=Cria_Tabela("","Localizacao(A15*),Referencia(A20*),Descricao do Item(A120*),Item do Pedido(S*),Quantidade(N),Unidade Fiscal(A4),obs(A255)")

FormKey
CoEditKey

{TableAdd} {PedidoI}
{TableAdd} TypeIn TABELA_TEMP Enter

CONTA_ITENS = 0
SEQ         = 0
Moveto "PedidoI"
Scan for [Numero do Pedido]=[PedidoC->Numero do Pedido]
  CONTA_ITENS = CONTA_ITENS+1
  
  DESC_COMP   = [Descricao do Item]
  UNIDADE     = ""
  LOCALIZACAO = ""
  GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM
  If RetVal 
     Then If REG_ITEM["Descricao Complementar"]<>""
             Then DESC_COMP   = REG_ITEM["Descricao Complementar"]
          EndIf   
          UNIDADE     = REG_ITEM["Unidade Fiscal"]
          LOCALIZACAO = REG_ITEM["Localizacao"] 
  EndIf
   
  COD_ITEM = [Codigo do Item]
  For p From 1 to 10
   If Substr(COD_ITEM,1,1)="0"
      Then COD_ITEM = SubStr(COD_ITEM,2,10)
      Else QuitLoop
   EndIf   
  EndFor        
 
  Moveto TABELA_TEMP  
  End Down
  [Localizacao            ]=LOCALIZACAO
  [Referencia             ]=COD_ITEM
  [Descricao do Item      ]=DESC_COMP
  [Item do Pedido         ]=[PedidoI->Item do Pedido]
  [Quantidade             ]=[PedidoI->Quantidade]
  [Unidade Fiscal         ]=UNIDADE
  
  If [PedidoI->Observacao_Item]<>""
     Then TM_OBS  = 78
          LARGURA  = 80
         
          OBS_PEDIDO1 = Ltrim(Rtrim(SubStr([PedidoI->Observacao_Item],001,NumVal(TM_OBS))))
          OBS_PEDIDO2 = Ltrim(Rtrim(SubStr([PedidoI->Observacao_Item],NumVal(TM_OBS)+1,NumVal(TM_OBS))))
          OBS_PEDIDO3 = Ltrim(Rtrim(SubStr([PedidoI->Observacao_Item],NumVal(TM_OBS)*2+1,NumVal(TM_OBS))))
          CONT_OBS = 0
          DynArray OBS[] 
          For i From 1 To 3
            Switch
              Case i = 1 : AUX_OBS = OBS_PEDIDO1
              Case i = 2 : AUX_OBS = OBS_PEDIDO2 
              Case i = 3 : AUX_OBS = OBS_PEDIDO3 
            EndSwitch
            If AUX_OBS="" Then Loop EndIf   
            While True
              posI = Search("\n",AUX_OBS)
              If posI>0
                 Then CONT_OBS = CONT_OBS + 1
                      OBS[CONT_OBS] = AlinhM(StrVal(CONT_OBS),3)+Format("W"+StrVal(TM_OBS),SubStr(AUX_OBS,1,posI-1))
                      AUX_OBS = SubStr(AUX_OBS,posI+1,Len(AUX_OBS))
                 Else CONT_OBS = CONT_OBS + 1 
                      OBS[CONT_OBS] = AlinhM(StrVal(CONT_OBS),3)+Format("W"+StrVal(TM_OBS),AUX_OBS)
                      QuitLoop
              EndIf
            EndWhile
          EndFor
          If CONT_OBS > 0
             Then CONTA = 0
                  For i From 1 To 3
                    Switch                                     
                      Case i = 1 : AUX_LINHA = OBS_PEDIDO1
                      Case i = 2 : AUX_LINHA = OBS_PEDIDO2 
                      Case i = 3 : AUX_LINHA = OBS_PEDIDO3 
                    EndSwitch
                    If IsAssigned(OBS[i])
                       Then AUX_OBS = Format("W"+StrVal(TM_OBS),SubStr(OBS[i],4,Len(OBS[i])))
                       Else AUX_OBS = Spaces(NumVal(TM_OBS))
                    EndIf          
                    If AUX_OBS<>""                                  
                       Then CONTA = CONTA + 1
                            If CONTA = 1
                              Then [obs     ]=Spaces(49) + "CORES: " + AUX_OBS + "\n"
                              Else [obs     ]=[obs] + Spaces(56) + AUX_OBS + "\n"
                            EndIf 
                    EndIf
                  EndFor
          EndIf
  EndIf
  UnLockRecord
  Moveto "PedidoI"  
EndScan

CONTA_ITENS  = 65

Moveto TABELA_TEMP
Home
QUANT    = 0
TOT      = 0
CONTADOR = 0

Scan
  OBS = Rtrim([OBS])
  
  Print File ARQIMP Spaces(2)
  Print File ARQIMP Format("W15,AL",[Localizacao])+Spaces(2)
  Print File ARQIMP Format("W10,AL",[Referencia])+Spaces(2)
  Print File ARQIMP Format("W12.3,EIC",[Quantidade])+Spaces(2)
  Print File ARQIMP Format("W2,AL",[Unidade Fiscal])+Spaces(2)
  Print File ARQIMP Format("W80",[Descricao do Item])+Spaces(2)
  Print File ARQIMP "\n"
  If OBS<>""
     Then posI = Search("\n",OBS)
          If posI>0
             Then AUX_OBS = OBS
                  While PosI>0
                    CONTADOR = CONTADOR + 1
                    AUX_OBS = Substr(AUX_OBS,PosI+1,Len(AUX_OBS)) 
                    posI = Search("\n",AUX_OBS)
                  EndWhile
                  CONTADOR = CONTADOR + 1
             Else CONTADOR = CONTADOR + 1         
          EndIf
          If SubStr(Rtrim(OBS),Len(Rtrim(OBS)),1)="\n"
             Then Print File ARQIMP OBS
             Else Print File ARQIMP OBS + "\n"
          EndIf        
  EndIf
  CONTADOR = CONTADOR + 1
  
  If CONTADOR>=76
     Then Print File ARQIMP "\f"
          Cabecalho()
          CONTADOR=0
  EndIf
  Moveto TABELA_TEMP
EndScan         

Print File ARQIMP "\027F"
Print File ARQIMP Spaces(2)+Fill("=",127)+"\n"

Moveto "PedidoC"
OBS = [Observacao do Pedido]

LINHA1 = "\n" ;Totalizador 
LINHA2 = "\n" ;Totalizador Desconto
LINHA3 = "\n" ;Totalizador Final 
        
TM_LINHA = 47 ;LINHA1 - LINHA2 - LINHA3
LARGURA  = 127        
TM_OBS   = "125"        
        
OBS_NOTA1 = Ltrim(Rtrim(SubStr(OBS,001,NumVal(TM_OBS))))
OBS_NOTA2 = Ltrim(Rtrim(SubStr(OBS,NumVal(TM_OBS)+1,NumVal(TM_OBS))))
OBS_NOTA3 = Ltrim(Rtrim(SubStr(OBS,NumVal(TM_OBS)*2+1,NumVal(TM_OBS))))

CONT_OBS = 0
DynArray OBS[] 
For i From 1 To 3
  Switch
    Case i = 1 : AUX_OBS = OBS_NOTA1
    Case i = 2 : AUX_OBS = OBS_NOTA2 
    Case i = 3 : AUX_OBS = OBS_NOTA3 
  EndSwitch
  If AUX_OBS="" Then Loop EndIf   
  While True
    posI = Search("\n",AUX_OBS)
    If posI>0
       Then CONT_OBS = CONT_OBS + 1
            OBS[CONT_OBS] = AlinhM(StrVal(CONT_OBS),3)+Format("W"+StrVal(TM_OBS),SubStr(AUX_OBS,1,posI-1))
            AUX_OBS = SubStr(AUX_OBS,posI+1,Len(AUX_OBS))
       Else CONT_OBS = CONT_OBS + 1 
            OBS[CONT_OBS] = AlinhM(StrVal(CONT_OBS),3)+Format("W"+StrVal(TM_OBS),AUX_OBS)
            QuitLoop
    EndIf
  EndWhile
EndFor   

If CONT_OBS > 0
   Then For i From 1 To 3
          Switch                                     
            Case i = 1 : AUX_LINHA = LINHA1
            Case i = 2 : AUX_LINHA = LINHA2 
            Case i = 3 : AUX_LINHA = LINHA3 
          EndSwitch
          If IsAssigned(OBS[i])
             Then AUX_OBS = Format("W"+StrVal(TM_OBS),SubStr(OBS[i],4,Len(OBS[i])))
             Else AUX_OBS = Spaces(NumVal(TM_OBS))
          EndIf          
          If AUX_OBS<>""                                  
             Then Print File ARQIMP Spaces(02)  + AUX_OBS + Spaces(LARGURA-NumVal(TM_OBS)-2) + AUX_LINHA  
             Else Print File ARQIMP Spaces(LARGURA) + AUX_LINHA 
          EndIf
        EndFor
   Else Print File ARQIMP Spaces(LARGURA)+LINHA1
        Print File ARQIMP Spaces(LARGURA)+LINHA2
        Print File ARQIMP Spaces(LARGURA)+LINHA3
EndIf   

Print File ARQIMP "\n"

Print File ARQIMP "  Cond. Pagto: "+[Descricao CondPagto]
Print File ARQIMP "   NP: "+StrVal([Numero de Parcelas])
Print File ARQIMP "   CD: "+[Composicao de Dias]+"\n\n"

Print File ARQIMP "\f"
  
EndProc ;(Itens)
                       
;*******************************************************************************
;* Rotina de Impressao dos Vencimentos                                         *
;*******************************************************************************
Proc VENC()

s1="Pagamento: "
;s1="  Vencimentos....: "
s2="                   "
s3="                   "
KV=0
for K from 1 to 24

 if isblank(FPGT[k])
    then quitloop
 endif    
 
 if kv=10
    then Print File ARQIMP s1+"\n"
         Print File ARQIMP s2+"\n"
         Print File ARQIMP s3+"\n"

         kv=0
         s1="                 "
         s2="                 "
         s3="                 "
 endif

 kv=kv+1
 s1=s1+FPGT[K]
 
 ;Impressao dos Vencimentos
 ;s1=s1+spaces(08)+FPGT[K]          +Spaces(02)
 ;s2=s2+Format("D13",DATA[k])       +Spaces(02)
 ;s3=s3+Format("W10.2,EIC",VALOR[k])+Spaces(02)

EndFor
;if kv>0
;  then Print File ARQIMP s1+"\n"
;       Print File ARQIMP s2+"\n"
;       Print File ARQIMP s3+"\n"
;
;       kv=0
;       s1=""
;       s2=""
;       s3=""
;endif

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
ArqImp=PrivDir()+"PD_0397.Txt"
If IsFile(ArqImp)
   Then Deleta_Arquivo(ARQIMP)
EndIf

Array  DATA[24]
Array VALOR[24]
Array FPGT [24]

for K from 1 to 24
   DATA[k]=blankdate()
  VALOR[k]=blanknum()
   FPGT[K]=""
endfor

K=0
Moveto "PedidoV"
Scan
  Faz_Processo=True
  For i From 1 To ArraySize(FPGT)
    If FPGT[i]=[Forma de Pagamento]
       Then Faz_Processo=False
            QuitLoop
    EndIf
  EndFor
  
  If Faz_Processo
     Then K=K+1
          If K>1
             Then FPGT[K]=", "+[Forma de Pagamento]
             Else FPGT[K]=[Forma de Pagamento]
          EndIf   
  EndIf
          
;ImpressÆo dos Vencimentos
;  DATA[K]=[Data ]
; VALOR[K]=[Valor]
;  FPGT[K]=[Forma de Pagamento]
  
EndScan

VENC()

AGUARDE("Imprimindo Pedido -> "+PEDIDO)
Cabecalho()
Itens()

;---- Imprime Arquivo Impressao ------------------------------------------------
ImpriArq(ARQIMP)

Do_It!
Moveto TABELA_TEMP ClearImage Delete TABELA_TEMP
Moveto "PedidoI"   ClearImage 

Moveto "PedidoC"
FormKey
CoEditKey

Release Vars VALOR,DATA,PARAM_NITENS
Release Procs IMPFAT,VENC
LIMPAGUARDE()
