;** ExpSaida *******************************************************************
;*  Exportacao Registro de Saida - Fiscal para Arquivo Texto                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 10/11/2005 por Davi Pereira Carrano
;Motivo Alteracao: Envia para o Diretorio Visao
;Ultima Alteracao: 14/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 12/11/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Mensagem/Observacao Substituicao Tributaria
;Ultima Alteracao: 08/06/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Campo Contador Reducao                        
;Ultima Alteracao: 04/01/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes processo                 
;Ultima Alteracao: 12/06/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Serie p/ ECF    
;Ultima Alteracao: 17/10/2013 por Andrey Fillipe
;Motivo Alteracao: Ajustes Notas Fiscais Canceladas GASPLAN            

;*******************************************************************************
;* Gera Arquivo Texto p/ Registro de Saida                                     *
;*******************************************************************************
Proc EXPORTA_S()
ClearAll

C=0
NR=NRecords("\\Sistemas\\Vendas\\RegSaida")

ARQ ="\\Sistemas\\Exporta\\Dados\\Asplan\\MS"+"0"+PREFIXO+MES+".TXT"
arquivos=arquivos+Completa(ARQ,62," ")+"//"

Deleta_Arquivo(ARQ)
gerou_arquivos=True

View "\\Sistemas\\Vendas\\RegSaida"

Scan
   Barra(NR, RecNo())
   AGUARDE("Aguarde, Exportando Dados Saidas "+BARRA_STRING)

   C=C+1

   CGCCPF=""
   TIPOP =""
   If SubStr([CGC],03,1)="." and
      SubStr([CGC],07,1)="." and
      SubStr([CGC],11,1)="/" and
      SubStr([CGC],16,1)="-"
      Then TIPOP  ="J"
           CGCCPF=SubStr([CGC],01,2)+
                  SubStr([CGC],04,3)+
                  SubStr([CGC],08,3)+
                  SubStr([CGC],12,4)+
                  SubStr([CGC],17,2)
      Else If SubStr([CGC],04,1)="." and
              SubStr([CGC],08,1)="." and
              SubStr([CGC],12,1)="-"
              Then TIPOP  ="F"
                   CGCCPF=SubStr([CGC],01,3)+
                          SubStr([CGC],05,3)+
                          SubStr([CGC],09,3)+
                          SubStr([CGC],13,2)
           EndIf
   EndIf
   
   Print File ARQ ALINHM(PREFIXO,4)
   Print File ARQ AlinhM([Numero da Nota Fiscal ],10)
   Print File ARQ Fill("0",3)
   Print File ARQ Fill(" ",5)
   Print File ARQ Completa(Substr([Razao Social],1,30),30," ")
   Print File ARQ Completa(CGCCPF,14," ")
   Print File ARQ Completa(Substr([IE],1,15),15," ")
   If [Cancelada]="S"
      Then Print File ARQ AlinhM("CA",2)
      Else Print File ARQ AlinhM([Estado Cliente],2)
   EndIf
   ESPECIE = " "
   SERIE   = " "
   Switch
       Case Strim([Especie da Nota Fiscal]) = "CX1" And Strim([Serie da Nota Fiscal]) = "CUP":
            ESPECIE = "ECF"
            SERIE   = "EC  "
       Case Strim([Especie da Nota Fiscal]) = "C/F" And Strim([Serie da Nota Fiscal]) = "CX1":
            ESPECIE = "ECF"
            SERIE   = "EC  "
       Case Strim([Especie da Nota Fiscal]) = "C/F":
            ESPECIE = "ECF"
            SERIE   = Strim([Serie da Nota Fiscal  ])
       Case Strim([Especie da Nota Fiscal]) = "NF" And Strim([Serie da Nota Fiscal]) = "F":
            ESPECIE = "NF "
            SERIE   = "F   "
       Case Strim([Especie da Nota Fiscal]) = "NF" And Strim([Serie da Nota Fiscal]) = "M-1":
            ESPECIE = "NF "
            SERIE   = "1   "
       Case Strim([Especie da Nota Fiscal]) = "TEL" And Strim([Serie da Nota Fiscal]) = "U":
            ESPECIE = "TEL"
            SERIE   = "U   "
       Case Strim([Especie da Nota Fiscal]) = "CEM" And Strim([Serie da Nota Fiscal]) = "U":
            ESPECIE = "CEM"
            SERIE   = "U   "
       Case Strim([Especie da Nota Fiscal]) = "NF" And Strim([Serie da Nota Fiscal]) = "D":
            ESPECIE = "NF "
            SERIE   = "2   "
       Case Strim([Especie da Nota Fiscal]) = "NFS" And Strim([Serie da Nota Fiscal]) = "1":
            ESPECIE = "NF "
            SERIE   = "1   "
       Case Strim([Especie da Nota Fiscal]) = "NFS" And Strim([Serie da Nota Fiscal]) = "F":
            ESPECIE = "NF "
            SERIE   = "U   "
       Case Strim([Especie da Nota Fiscal]) = "NF" And Strim([Serie da Nota Fiscal]) = "S-1":
            ESPECIE = "NFS"
            SERIE   = "1   "
       Case Strim([Especie da Nota Fiscal]) = "CTR" And Strim([Serie da Nota Fiscal]) = "U":
            ESPECIE = "CTR"
            SERIE   = "U   "
       Otherwise:
            ESPECIE = Strim([Especie da Nota Fiscal])
            SERIE   = Strim([Serie da Nota Fiscal  ])
   EndSwitch
   Print File ARQ Completa(ESPECIE,4," ")
   Print File ARQ Completa(SERIE,3," ")

   Print File ARQ DATA2STR_S([Data de Emissao])
   Print File ARQ DATA2STR_S([Data de Saida])
   Print File ARQ VALOR2STR_S([Valor Contabil    ],13)
   Print File ARQ VALOR2STR_S([Base Calculo ICMS ],13)
   Print File ARQ VALOR2STR_S([Base Calculo IPI  ],13)
   Print File ARQ VALOR2STR_S([Aliquota de ICMS  ],4)
   Print File ARQ VALOR2STR_S([ICMS Debitado     ],11)
   Print File ARQ VALOR2STR_S([IPI Debitado      ],11)
   Print File ARQ Fill("0",13)
   If [CFO]="5403"
      Then Print File ARQ VALOR2STR_S([ICMS Outros       ],13)
      Else Print File ARQ Fill("0",13)
   EndIf
   Print File ARQ Fill("0",1)
   If SubStr([CFO],1,2)="54"
      Then Print File ARQ Fill("87",4)
      Else Print File ARQ Fill("0",4)
   EndIf     
   Print File ARQ VALOR2STR_S([ICMS Isento       ],13)
   If [CFO]<>"5403"
      Then Print File ARQ VALOR2STR_S([ICMS Outros       ],13)
      Else Print File ARQ Fill("0",13)
   EndIf
   Print File ARQ VALOR2STR_S([IPI Isento        ],13)
   Print File ARQ VALOR2STR_S([IPI Outros        ],13)
   Print File ARQ Fill(" ",15)
   Print File ARQ Fill(" ",5)
   Print File ARQ Fill("0",5)
   Print File ARQ AlinhM([Condicao de Pagamento   ], 2)

   Switch
     Case SubStr([CFO],1,2)="54": Print File ARQ Fill("2",2)
                                  Print File ARQ Fill("0",4)
     OtherWise                  : Print File ARQ Fill("0",6)
   EndSwitch
   Switch
     Case SubStr([CFO],1,2)="54": Print File ARQ VALOR2STR_S([Valor Contabil    ],13)
                                  Print File ARQ Fill("0",26)
     OtherWise                  : Print File ARQ Fill("0",39)
   EndSwitch
   
   Print File ARQ Fill("0",24)
   Print File ARQ Fill(" ",2)
   Print File ARQ VALOR2STR_S([Totalizador Inicial  ],13)
   Print File ARQ VALOR2STR_S([Totalizador Final    ],13)
   Print File ARQ VALOR2STR_S([Cancelados           ],13)
   Print File ARQ VALOR2STR_S([Descontos            ],13)
   Print File ARQ Completa([Numero Serie Fabricacao ],15," ")
   Print File ARQ AlinhM([Contador Reducao], 6)
   Print File ARQ AlinhM(STRVAL([Numero do ECF    ]),4)
   Print File ARQ Fill("0",5)
   Print File ARQ Fill("0",2)
   Print File ARQ AlVar([CFO                     ],4," ")
   Print File ARQ Fill("0",20)
   Print File ARQ Fill(" ",50)
   Print File ARQ Fill("0",8)
   Print File ARQ Fill(" ",4)
   Print File ARQ Fill("0",16)
   Print File ARQ AlinhM([Numero Varias Notas     ],10)

   Print FIle ARQ "\n"

EndScan

EndProc

;*******************************************************************************
;* Gera Arquivo Texto p/ Registro de Saida - Itens                             *
;*******************************************************************************
Proc EXPORTA_SIT()
ClearAll

C1=0
NR=NRecords("\\Sistemas\\Exporta\\It_TempS")

ARQ2="\\Sistemas\\Exporta\\Dados\\Asplan\\IS"+"0"+PREFIXO+MES+".TXT"
arquivos=arquivos+Completa(ARQ2,62," ")+"//"
Deleta_arquivo(ARQ2)

View "\\Sistemas\\Exporta\\It_TempS"

Scan
   Barra(NR, RecNo())
   AGUARDE("Aguarde, Exportando Itens Saidas "+BARRA_STRING)

   C1=C1+1
   
   Print File ARQ2 ALINHM(PREFIXO,4)
   Print File ARQ2 AlinhM([Numero do Documento   ],10)
   Print File ARQ2 Fill("0",3)
   Print File ARQ2 AlinhM([UF],2)
   Print File ARQ2 DATA2STR_S([Data de Emissao])
   Print File ARQ2 Completa([NCM],10," ")
   Print File ARQ2 Substr([Unidade Fiscal],1,2)

   VRTIT=STRIM(STRVAL([Quantidade]))
   VRTIT=FILL("0",9-LEN(VRTIT))+VRTIT
   Print File ARQ2 VRTIT


   Print File ARQ2 VALOR2STR_S([Preco Total         ],10)
   Print File ARQ2 VALOR2STR_S([Aliquota de IPI     ], 4)
   Print File ARQ2 VALOR2STR_S([Valor do IPI        ],10)
   Print File ARQ2 VALOR2STR_S([Item do Documento   ], 2)
   Print File ARQ2 Completa([CFO        ],4," ")
   Print File ARQ2 AlinhM([Codigo do Item      ],14)
   Print File ARQ2 Completa([Tipo Tributacao      ], 3," ")
   Print File ARQ2 VALOR2STR_S([Valor Desconto Total],10)

   BCICMS=[Preco Total]-[Valor Desconto Total]
   Print File ARQ2 VALOR2STR_S(BCICMS,10)
   Print File ARQ2 VALOR2STR_S(BCICMS,10)


   Print File ARQ2 VALOR2STR_S([Aliquota de ICMS], 4)
   Print File ARQ2 Completa([Descricao do Item],50," ")
   Print File ARQ2 VALOR2STR_S([Aliquota Reduzida BCICMS],04)
   Print File ARQ2 Completa([Codigo de Barras],14," ")
   Print File ARQ2 Fill("0",7)

   Print FIle ARQ2 "\n"

EndScan

EndProc

;******************************************************************************
; CONVERTE DATA DE GRAVACAO PARA STRING                                       *
;******************************************************************************
PROC DATA2STR_S(DATA)
DTGRAV=AlinhM(LTrim(Format("D13",DATA)),10)
DTGRAV=SUBSTR(DTGRAV,1,2)+SUBSTR(DTGRAV,4,2)+SUBSTR(DTGRAV,9,2)
RETURN DTGRAV
ENDPROC                                       

;********************************************************************************
;* CONVERTE VALOR PARA STRING                                                  *
;********************************************************************************
PROC VALOR2STR_S(VALOR,TAM)
VRTIT=STRVAL(VALOR)
PART1=LEN(VRTIT)-3
PART2=LEN(VRTIT)-1
VRTIT=SUBSTR(VRTIT,1,PART1)+SUBSTR(VRTIT,PART2,2)
VRTIT=FILL("0",TAM-LEN(VRTIT))+VRTIT
RETURN VRTIT
ENDPROC

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
If IsEmpty("\\Sistemas\\Vendas\\RegSaida")
   Then Mensagem("N„o Existem Registros a Processar Registro de Saida !")
        Return
EndIf

EXPORTA_S()
If IsTable("\\Sistemas\\Exporta\\It_TempS")
   Then EXPORTA_SIT()
EndIf
If C=0 And C1=0
   Then MENSAGEM("N„o Ocorreu Exporta‡„o de Registros de Saˇda")
        Return
EndIf

LimpAguarde()
Release Procs EXPORTA_S, EXPORTA_SIT, DATA2STR_S,VALOR2STR_S
