;** RO_0377 ********************************************************************
;** Imprime a Digitacao do Romaneio - Troca                                    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 14/12/2015 por Bruno Carvalho
;Ultima Alteracao: 15/02/2015 por Anivel Augutso Rodrigues
;Motivo Alteracao: Ajustes logica
;Ultima Alteracao: 22/02/2015 por Anivel Augutso Rodrigues
;Motivo Alteracao: Ajustes Codigo Empresa
;Ultima Alteracao: 24/02/2015 por Anivel Augutso Rodrigues
;Motivo Alteracao: Ajustes criterio soma CT_UTILIZADO
;Ultima Alteracao: 06/04/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado impressÆo do controle_dia da expedicao no romaneio
;Ultima Alteracao: 05/08/2017 por Bruno Carvalho
;Motivo Alteracao: Substituido [Valor IR] -> [Valor DebitoCredito] e [Valor INSS] -> [Valor TC]
;Ultima Alteracao: 30/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes vrfrete e obs
;Ultima Alteracao: 06/06/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado todo o processo onde antes utilizava a tabela "ExpedOfC", que a partir de entÆo passou a ser "ExpedC"
;Ultima Alteracao: 21/10/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ ignorar itens com [quantidade]=0

;*******************************************************************************
;* Rotina para Impressao do Relatorio                                          *
;*******************************************************************************
Proc Cabecalho()

QUEBRA   = False
CONTADOR = 0

;************************** IMPRESSAO DO CABECALHO *****************************
If Not IsAssigned(NOMEMPRESA)
   Then NOMEMPRESA=""
EndIf
Moveto "Faturac"
;Print File ARQIMP chr(27)+chr(67)+chr(33) ;Imprime 33 Linhas por pagina
Print File ARQIMP CI_10CPP
Print File ARQIMP CI_6LPP

;Print File ARQIMP "\n"
Print File ARQIMP Format("W50,AL","CONTROLE INTERNO - "+[Faturac->Codigo da Empresa])+"Impressao: "+Format("D10",Today())+"-"+Time()+ "\n\n"

Print File ARQIMP "\014"
Print File ARQIMP "\027E"
Print File ARQIMP Spaces(20)+"Orcamento N§ "+Format("W06.3,AL",NOTAFISC)+"\n"
Print File ARQIMP "\020"

Print File ARQIMP "Cliente : "+Format("W05,AL",[Codigo])+Format("W46,AL",[Razao Social])+"\n"
Print File ARQIMP "\027F"

Print File ARQIMP CI_8LPP
Print File ARQIMP "\027P"         ;Imprime 10 Caracteres por polegada

Print File ARQIMP Spaces(10)+Format("W40,AL",[Endereco])
Print File ARQIMP Format("W18,AL",[CGC])+"\n"

Print File ARQIMP Spaces(10)+Format("W20,AL",[Bairro])
Print File ARQIMP Format("W20,AL",[CEP])
Print File ARQIMP Format("W25,AL",[IE])+"\n"

Print File ARQIMP Spaces(10)+Format("W20,AL",[Cidade])
Print File ARQIMP Format("W20,AL",[UF])
Print File ARQIMP Format("W25,AL",[Telefone])+"\n"

Print File ARQIMP "Operacao: "
Print File ARQIMP Chr(27)+Chr(71)
Print File ARQIMP ""+[Codigo da Destinacao]+" "+[Descricao da Destinacao]+"\n"
Print File ARQIMP Chr(27)+Chr(72)

Print File ARQIMP "Vendedor: "+Format("W05,AL",[Codigo do Representante])
Print File ARQIMP Format("W25,AL",[Nome Fantasia Represent])+"\n"
Print File ARQIMP "\015"         ;Imprime 17 Caracteres por polegada

;********************* IMPRESSAO DOS ITENS ********************************
Print File ARQIMP "--------------------------------------------------------------------------------------------------------------------------------"+"\n"
Print File ARQIMP "  Item                                                                          Un  Quantidade  Unitario        Total      Pecas"+"\n"
Print File ARQIMP "--------------------------------------------------------------------------------------------------------------------------------"+"\n"

EndProc ;Cabecalho()

;*******************************************************************************
;* Rotina para Impressao do Relatorio                                          *
;*******************************************************************************
Proc IMPFAT()
private PECAS 

Cabecalho()

TOTDEV     = 0

If IsAssigned(FATURA_TROCA)
   Then 
        Print File ARQIMP "* Entradas\n"
        CONTADOR = CONTADOR + 1

        Moveto "FaturaId"
        Moveto [Numero da OF]
        Locate [FaturaC->Numero da OF]
        While [Numero da OF]=[FaturaC->Numero da OF]
          PECAS    = BlankNum()

          GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM
          If RetVal
             Then If REG_ITEM["Unidade Fiscal"]="KG" 
                     Then If REG_ITEM["Peso Liquido"] > 0 And REG_ITEM["Peso Liquido"] <> BlankNum()
                             Then PECAS = NDecimal(NDecimal([Quantidade],3)/REG_ITEM["Peso Liquido"],3)
                          EndIf
                  EndIf   
          EndIf
                       
          Print File ARQIMP Spaces(02)+Format("W03,AR",StrVal([Item da OF]))
          Print File ARQIMP Spaces(01)+Format("W11,AL",[Codigo do Item])
          Print File ARQIMP Spaces(01)+Format("W61,AL",[Descricao do Item])
          Print File ARQIMP Spaces(01)+Format("W03,Al",[Unidade Fiscal])
          If [Quantidade]-Int([Quantidade])>0
             Then Print File ARQIMP Format("W011.3,EIC",[Quantidade])
             Else Print File ARQIMP Format("W011,EIC",[Quantidade])
          EndIf
          Print File ARQIMP Format("W10.2,EIC",[Preco Unitario])
          Print File ARQIMP Format("W13.2,EIC",[Preco Total])+Spaces(1)
          If PECAS <> BlankNum()
             Then Print File ARQIMP Format("W10.3,EIC",PECAS)
             Else Print File ARQIMP Spaces(10)
          EndIf   
          Print File ARQIMP "\n"
          
          TOTDEV= TOTDEV + [Preco Total]
          
          Skip
          If EOT() Then QuitLoop EndIf
          
          CONTADOR = CONTADOR + 1
          If CONTADOR>=40
             Then QUEBRA = True
                  Rodape()
                  Cabecalho()

                  Print File ARQIMP "* Entradas\n"
                  CONTADOR = 0

                  Moveto "FaturaId"
          EndIf
        EndWhile

        Print File ARQIMP Spaces(87)+"Total Devolucoes..."+Format("W11.2,EIC",TOTDEV)+"\n\n"
        CONTADOR = CONTADOR + 2
EndIf

TOT      = 0

Print File ARQIMP "* Saidas\n"
CONTADOR = CONTADOR + 1

Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]
  If [Quantidade]>0
     Then AJUSTA_LINHA=True
          PECAS    = BlankNum()

          GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM
          If RetVal
             Then If REG_ITEM["Unidade Fiscal"]="KG" 
                     Then If REG_ITEM["Peso Liquido"] > 0 And REG_ITEM["Peso Liquido"] <> BlankNum()
                             Then PECAS = NDecimal(NDecimal([Quantidade],3)/REG_ITEM["Peso Liquido"],3)
                          EndIf
                  EndIf   
          EndIf             
        
          Print File ARQIMP Spaces(02)+Format("W03,AR",StrVal([Item da OF]))
          
          Print File ARQIMP Spaces(01)+Format("W11,AL",[Codigo do Item])
          Print File ARQIMP Spaces(01)+Format("W61,AL",[Descricao do Item])
          Print File ARQIMP Spaces(01)+Format("W03,Al",[Unidade Fiscal])
          If [Quantidade]-Int([Quantidade])>0
              Then Print File ARQIMP Format("W011.3,EIC",[Quantidade])
              Else Print File ARQIMP Format("W011,EIC",[Quantidade])
          EndIf
          Print File ARQIMP Format("W10.2,EIC",[Preco Unitario])
          Print File ARQIMP Format("W13.2,EIC",[Preco Total])+Spaces(1)
          If PECAS <> BlankNum()
             Then Print File ARQIMP Format("W10.3,EIC",PECAS)
             Else Print File ARQIMP Spaces(10)
          EndIf   
          Print File ARQIMP "\n"
  
          TOT   = TOT + [Preco Total]
     Else AJUSTA_LINHA=False
  EndIf        
  Skip
  If EOT() Then QuitLoop EndIf

  If AJUSTA_LINHA
     Then CONTADOR = CONTADOR + 1
          If CONTADOR>=40
             Then QUEBRA = True
                  Rodape()
                  Cabecalho()
        
                  Moveto "FaturaI"
                  Print File ARQIMP "* Saidas\n"
                  CONTADOR = 0
          EndIf
  EndIf  
EndWhile
Print File ARQIMP Spaces(87)+"Total Vendas......."+Format("W11.2,EIC",TOT)+"\n"
CONTADOR = CONTADOR + 1

If CONTADOR<12
   Then For ITEM From CONTADOR To 12
          Print File ARQIMP "\n"
        EndFor
EndIf
QUEBRA = False
Rodape()        

EndProc ;IMPFAT()

;*******************************************************************************
;* Rotina para Imprimir o Rodape                                               *
;*******************************************************************************
Proc Rodape()
private TC, CT_UTILIZADO, OBS,vrfrete,lvrfrete

Print File ARQIMP "--------------------------------------------------------------------------------------------------------------------------------"+"\n"

;********************************** CALCULO TC *********************************
TC = ""
CT_UTILIZADO = BlankNum()
Moveto "FaturaV"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]
  If [Forma de Pagamento]="TC" and 
     (substr([Observacao],1,3)="CP-" Or substr([Observacao],1,3)="CR-") and
     not isblank([Numero do Cartao  ])
     Then If TC<>""
             Then TC = TC + ", "
          EndIf    
          TC = TC + Rtrim([Observacao]) + "  " + Ltrim(StrVal([Valor]))   
          CT_UTILIZADO = CT_UTILIZADO + [Valor]
  EndIf
  Skip
  If Eot() Then QuitLoop EndIf   
EndWhile
;************************** IMPRESSAO DOS TOTAIS *******************************
Moveto "FaturaC"

If [Valor DebitoCredito]>0
   Then DIF="Credito"
   Else If [Valor DebitoCredito]<0
           Then DIF="Debito"
           Else DIF="Zero"
        EndIf
EndIf

If QUEBRA
   Then Print File ARQIMP Spaces(86)+"Entrada............. *******   "+"\n"
        Print File ARQIMP Spaces(86)+"Saida............... *******   "+"\n"
   Else Print File ARQIMP Spaces(86)+"Entrada............."+Format("W11.2,EIC",TOTDEV)+"\n"
        Print File ARQIMP Spaces(86)+"Saida..............."+Format("W11.2,EIC",TOT)+"\n"
EndIf   
Print File ARQIMP "          *** FAVOR MANTER O ENDERECO E O TELEFONE ATUALIZADOS ***"

If [Faturac->Frete Incluso na Nota]="S" or
  [Faturac->Frete Incluso na Nota]="+"
  Then  vrfrete=[Faturac->Valor do Frete]
       lvrfrete="(+)Frete..: "+Format("W10.2,EIC",vrfrete)
  Else  vrfrete=BlankNum()
       lvrfrete="(:)Frete..: "+Format("W10.2,EIC",vrfrete)
EndIf   


If QUEBRA
   Then Print File ARQIMP Spaces(20)+"Desconto"+Format("W06.2,EIC",[Taxa de Desconto]) + "%....."
        Print File ARQIMP Format("W12.2,EIC",[Valor Desconto])+"\n"
        Print File ARQIMP Spaces(86)+"DespAces............ *******   "+"\n"
        Print File ARQIMP Spaces(86)+"Frete............... *******   "+"\n"
        
        If IsAssigned(FATURA_TROCA)       
           Then Print File ARQIMP Spaces(86)+"Diferenca........... *******   "+" (" + DIF + ")"+"\n"
        EndIf       
        
        ;Print File ARQIMP Spaces(86)+"Total Liquido....... *******   "+"\n"
        Print File ARQIMP Spaces(86)+"Credito Utilizado... *******   "+"\n"
        Print File ARQIMP Spaces(86)+"Credito Gerado...... *******   "+"\n\n"
   Else Print File ARQIMP Spaces(20)+"Desconto"+Format("W06.2,EIC",[Taxa de Desconto]) + "%....."
        Print File ARQIMP Format("W12.2,EIC",[Valor Desconto])+"\n"
        Print File ARQIMP Spaces(86)+"DespAces............"+Format("W11.2,EIC",[Valor Despesas Acessorias])+"\n"
        Print File ARQIMP Spaces(86)+"Frete..............."+Format("W11.2,EIC",vrfrete)+"\n"
        
        If IsAssigned(FATURA_TROCA)
           Then Print File ARQIMP Spaces(86)+"Diferenca..........."+Format("W11.2,EIC",[Valor DebitoCredito])+" (" + DIF + ")"+"\n"
        EndIf       
        
        ;Print File ARQIMP Spaces(86)+"Total Liquido......."+Format("W11.2,EIC",([Valor Mercadoria Liquido]+[Valor Despesas Acessorias]))+"\n"
        Print File ARQIMP Spaces(86)+"Credito Utilizado..."+Format("W11.2,EIC",CT_UTILIZADO)+"\n"
        Print File ARQIMP Spaces(86)+"Credito Gerado......"+Format("W11.2,EIC",[Valor TC])+"\n\n"
EndIf  

Print File ARQIMP "Cond. Pagto: "+[Descricao CondPagto]
Print File ARQIMP "   NP: "+StrVal([Numero de Parcelas])
Print File ARQIMP "   CD: "+[Composicao de Dias]+"\n"                       
                              
Print File ARQIMP "OBS.: "+Format("W75,AL",SubStr(Tira_QuebraLinha([Observacao na Nota Fiscal]),001,73))+"\n\n"

;************************ IMPRESSAO DE TITULO DE CREDITO ***********************
TC = "\027E" + "Titulo de Credito: " + "\027F" + TC
Print File ARQIMP SubStr(TC,1,99)+"\n"
If SubStr(TC,100,99)<>""
   Then Print File ARQIMP Spaces(19)+SubStr(TC,100,99)+"\n"
EndIf
If SubStr(TC,199,99)<>""
   Then Print File ARQIMP Spaces(19)+SubStr(TC,199,99)+"\n"
EndIf                           
                 
Print File ARQIMP "\n\n"+"  Expedicao: "
If [Numero da Expedicao]<>"" And [Origem da Expedicao]<>""
   Then GetRecord "\\Sistemas\\Vendas\\ExpedC"   [Numero da Expedicao] To REG_EXPED                
        If Retval
           Then GetRecord "\\Sistemas\\Cadastro\\Usuarios" REG_EXPED["Codigo_Usuario"] To REG_USUARIO
                If RetVal
                   Then VSDGNOMUSUARIO = REG_USUARIO["Nome"]
                   Else VSDGNOMUSUARIO = ""
                EndIf   
                Print File ARQIMP Format("W4",REG_EXPED["Codigo_Usuario"])+" "+VSDGNOMUSUARIO+"  "+
                                  Format("D13",REG_EXPED["Data_Inclusao"])+" "+
                                  REG_EXPED["Hora_Inclusao"]
        EndIf
        Release Vars REG_USUARIO,VSDGNOMUSUARIO,REG_EXPED
EndIf
Print File ARQIMP "\n"                  
;************************ IMPRESSAO DOS VENCIMENTOS ****************************
Array DATA [9]
Array VALOR[9]
Array FPGT [9]
K=0
KV=0
Moveto "FaturaV"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]
  If [Forma de Pagamento]<>"TC"
     Then If K = 0
             Then Print File ARQIMP "\018"
                  Print File ARQIMP "\027E"
                  Print File ARQIMP "Vencimentos: "
          EndIf        
          K=K+1
          DATA[K]  = Format("D13",[Data])
          VALOR[K] = Format("W10.2,AR,EIC",[Valor])
          FPGT[K]  = Format("W10","FP: "+[Forma de Pagamento])
          If K=9
             Then VENC()
                  K=0
          EndIf
  EndIf
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile
If K>0
   Then VENC()
EndIf

Print File ARQIMP "\027F"

;************************* IMPRESSAO DO RODAPE *********************************
If Not QUEBRA
   Then Print File ARQIMP Spaces(12)+"   /   /     -                                   " + "\n"
        Print File ARQIMP Spaces(12)+"-------------------------------------------------" + "\n"
        Print File ARQIMP Spaces(12)+"              Data e Assinatura"+"\n"        
EndIf

Print File ARQIMP CI_6LPP
Print File ARQIMP CI_10CPP
Print File ARQIMP "\f"
        
EndProc

;*******************************************************************************
;* Rotina de Impressao dos Vencimentos                                         *
;*******************************************************************************
Proc VENC()
private i
If KV>0
   Then Print File ARQIMP Spaces(13)
EndIf
For I From 1 to K
  Print File ARQIMP FPGT[I]+Spaces(02)
EndFor

Print File ARQIMP "\n"
Print File ARQIMP Spaces(13)
For I From 1 to K
  Print File ARQIMP DATA[I]+Spaces(02)
EndFor

Print File ARQIMP "\n"
Print File ARQIMP Spaces(13)
For I From 1 to K
  Print File ARQIMP VALOR[I]+Spaces(02)
EndFor

Print File ARQIMP "\n\n"

KV=KV+1
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************

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

AGUARDE("Imprimindo Romaneio -> "+NOTAFISC)
IMPFAT()

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

Release Vars QUEBRA, CONTADOR, TOT, DATA, VALOR, FPGT, QUEBRA_VENCTO, K, KV
Release Procs IMPFAT, VENC, Cabecalho, Rodape
LIMPAGUARDE()


