Dim LOG, retorno 
Const ForReading=1, ForWriting=2, ForAppending=8

Set CONSOLE = CreateObject ("Scripting.FileSystemObject")
Set stdout = CONSOLE.GetStandardStream (1)

If CONSOLE.FolderExists ("\SWEDA") = False Then
   CONSOLE.CreateFolder ("\SWEDA")
End If

' Chama dll SWEDA
rem -----------------------------------------------------------------------------------------------
set SATsw = CreateObject("SATscript.DLL.object")
rem -----------------------------------------------------------------------------------------------





REM ------------------------     P   R   I   N   T   E   R     -------------------------------

rem "Informa cld e CSC se for NFCe."
retorno = SATsw.Inicia_Printer_SI300("000001","abc1234567890defghij1234567890klmnop")
stdout.WriteLine "Inicia_Printer_SI300 (000001, abc1234567890defghij1234567890klmnop) -> " & retorno
 
rem "Arquivo CONVERSOR.INI criado ou alterado pela biblioteca se a iniciação foi OK."
rem ------------------------------------------------------------------------------------------------------

rem "********************************** CONFIGURAÇÃO DAS CHAVES *******************************************"
rem "Pula uma linha antes das TAGS: <ce> <ad> <tc>. "
retorno = SATsw.WriteChavesConversorINI_SI300("ENTER_ALINHAMENTO", "0")
stdout.WriteLine "WriteChavesConversorINI_SI300    ENTER_ALINHAMENTO = 0 -> " & retorno

rem "Tamanho do QRCODE. Valores aceitos de 1 a 16 (padrão 3)"
retorno = SATsw.WriteChavesConversorINI_SI300("TAMANHO_QRCODE", "3")
stdout.WriteLine "WriteChavesConversorINI_SI300    TAMANHO_QRCODE = 3 -> " & retorno

rem "Número de linhas do cabeçalho (padrão é 4). Até 60."
retorno = SATsw.WriteChavesConversorINI_SI300("ALTURA_CABECALHO","6")
stdout.WriteLine "WriteChavesConversorINI_SI300    ALTURA_CABECALHO = 6 -> " & retorno

rem "Logo e dados do cabeçalho a serem impressos em comprovantes e relatórios."
rem <<< Existe OPÇÃO 2 via função >>>>

dim cabecalho
cabecalho = "<logo>flecha.bmp</logo>" + "<c>razao social<l></l></c>" + "<c>fantasia<l></l></c>" + "<c>endereço<l></l></c>"
retorno = SATsw.WriteChavesConversorINI_SI300("CABECALHO",cabecalho) 
stdout.WriteLine "WriteChavesConversorINI_SI300    CABECALHO = " & cabecalho & " -> " & retorno

rem "Localização de eventual arquivo bmp com o logo a ser impresso."
retorno = SATsw.WriteChavesConversorINI_SI300("PATH_LOGO_XML","sweda.bmp")
stdout.WriteLine "WriteChavesConversorINI_SI300    PATH_LOGO_XML = sweda.bmp -> " & retorno

rem "Permite a impressão de dados adicionais no DANFE."
retorno = SATsw.WriteChavesConversorINI_SI300("[NFCE]INFO_DETALHE_VENDA","1")
stdout.WriteLine "WriteChavesConversorINI_SI300    [NFCE]INFO_DETALHE_VENDA = 1 -> " & retorno

rem "Esta URL é impressa no desenho 2D do QRCODE  e concatenado com outros dados para leitura pelo celular."
retorno = SATsw.WriteChavesConversorINI_SI300("[NFCE]WS_CONSULTA_QRCODE", "http://www4.fazenda.rj.gov.br/consultaNFCe/QRCode?")
stdout.WriteLine "WriteChavesConversorINI_SI300    [NFCE]WS_CONSULTA_QRCODE = http://www4.fazenda.rj.gov.br/consultaNFCe/QRCode? -> " & retorno 

rem "Esta URL é impressa no DANFE para que o consumidor pode fazer consulta pela INTERNET."
retorno = SATsw.WriteChavesConversorINI_SI300("[NFCE]URL_CONSULTA","https://www.sefaz.rs.gov.br/NFE/NFE-COM.aspx?")
stdout.WriteLine "WriteChavesConversorINI_SI300    [NFCE]URL_CONSULTA = https://www.sefaz.rs.gov.br/NFE/NFE-COM.aspx? -> " & retorno 

rem "DE OLHO NO IMPOSTO"
rem "Imprime valor aproximado dos tributos que é opcional caso o estabelecimento exiba as informações em painel."
retorno = SATsw.WriteChavesConversorINI_SI300("[SAT]VALOR_TRIBUTOS","1")
stdout.WriteLine "WriteChavesConversorINI_SI300    [SAT]VALOR_TRIBUTOS = 1 -> " & retorno

rem "Tempo em milissegundos para espera de impressão. 30000 = 30 segundos."
retorno = SATsw.WriteChavesConversorINI_SI300 ("TIMEOUT", "30000")
stdout.WriteLine "WriteChavesConversorINI_SI300    TIMEOUT = 30000 -> " & retorno

rem "**************************************** LEITURA DAS CHAVES ************************************************"
retorno = SATsw.GetChavesConversorINI_SI300("PORTA")
stdout.WriteLine "PORTA= " & retorno

rem "Pula uma linha antes das TAGS: <ce> <ad> <tc>. "
retorno = SATsw.GetChavesConversorINI_SI300("ENTER_ALINHAMENTO")
stdout.WriteLine "ENTER_ALINHAMENTO= " & retorno

rem "Tamanho do QRCODE. Valores aceitos de 1 a 16 (padrão 3)"
retorno = SATsw.GetChavesConversorINI_SI300("TAMANHO_QRCODE")
stdout.WriteLine "TAMANHO_QRCODE= " & retorno

rem "Número de linhas do cabeçalho (padrão é 4). Até 60."
retorno = SATsw.GetChavesConversorINI_SI300("ALTURA_CABECALHO")
stdout.WriteLine "ALTURA_CABECALHO= " & retorno

rem "Logo e dados do cabeçalho a serem impressos em comprovantes e relatórios."
retorno = SATsw.GetChavesConversorINI_SI300("CABECALHO")
stdout.WriteLine "CABECALHO= " & retorno

rem "Localização de eventual arquivo bmp com o logo a ser impresso."
retorno = SATsw.GetChavesConversorINI_SI300("PATH_LOGO_XML")
stdout.WriteLine "PATH_LOGO_XML= " & retorno

rem "Permite a impressão de dados adicionais no DANFE."
retorno = SATsw.GetChavesConversorINI_SI300("[NFCE]INFO_DETALHE_VENDA")
stdout.WriteLine "[NFCE]INFO_DETALHE_VENDA= " & retorno

rem "Esta URL é impressa no desenho 2D do QRCODE  e concatenado com outros dados para leitura pelo celular. "
retorno = SATsw.GetChavesConversorINI_SI300("[NFCE]WS_CONSULTA_QRCODE")
stdout.WriteLine "[NFCE]WS_CONSULTA_QRCODE= " & retorno 

rem "Esta URL é impressa no DANFE para que o consumidor pode fazer consulta pela INTERNET."
retorno = SATsw.GetChavesConversorINI_SI300("[NFCE]URL_CONSULTA")
stdout.WriteLine "[NFCE]WS_CONSULTA= " & retorno 

rem "DE OLHO NO IMPOSTO"
rem "Imprime valor aproximado dos tributos que é opcional caso o estabelecimento exiba as informações em painel."
retorno = SATsw.GetChavesConversorINI_SI300("[SAT]VALOR_TRIBUTOS")
stdout.WriteLine "[SAT]VALOR_TRIBUTOS= " & retorno

rem "Tempo em milissegundos para espera de impressão. 30000 = 30 segundos."
retorno = SATsw.GetChavesConversorINI_SI300("TIMEOUT")
stdout.WriteLine "TIMEOUT= " & retorno

rem "--------------- Logo e dados do cabeçalho a serem impressos em comprovantes e relatórios ------------"
rem "<<< Existe OPÇÃO 2  >>>>"
cabecalho = "<c>SWEDA INFORMATICA LTDA.<l></l></c>" +_
            "<c>SWEDA<l></l></c>" +_
            "<c>Rua Dona Brigida 753 predio<l></l>Vila Mariana São Paulo SP<l></l>04111-123 6821065644<l></l></c>"

retorno = SATsw.ConfigCabec_SI300("","sweda.bmp",cabecalho) 
stdout.WriteLine "ConfigCabec_SI300 (sweda.bmp, " & cabecalho & ") -> " & retorno

rem "Logo e dados do cabeçalho a serem impressos em comprovantes e relatórios."
retorno = SATsw.GetChavesConversorINI_SI300("CABECALHO")
stdout.WriteLine "CABECALHO= " & retorno

rem "**************************************** FUNÇÕES DE IMPRESSÃO *******************************************"
rem "[[[[[[[[[[[[[[      G A V E T A     ]]]]]]]]]]]]]]]]]"
retorno = SATsw.ModoGaveta_SI300("0")
stdout.WriteLine "ModoGaveta_SI300   = " & retorno
retorno = SATsw.AcionaGaveta_SI300
stdout.WriteLine "AcionaGaveta_SI300 = " & retorno
retorno = SATsw.StatusGaveta_SI300
stdout.WriteLine "StatusGaveta_SI300 = " & retorno

rem "##################  I M P R E S S Ã O    DE     T E X T O   #####################"

retorno = SATsw.ImprimeTexto_SI300 ("<cabecalho></cabecalho>" & vbCrLf)
retorno = SATsw.ImprimeTexto_SI300 ("TEF.txt")
stdout.WriteLine "ImprimeTexto_SI300  TEF.TXT -> "  & retorno
retorno = SATsw.ImprimeTexto_SI300 ("1234567890" & vbCrLf)
stdout.WriteLine "ImprimeTexto_SI300  1234567890 -> "  & retorno

rem "<<<<<<<<<<<< IMPRIMIR IMAGEM >>>>>>>>>>>>>>>>>>>>"
rem "= 1 = imprimir imagens (.bmp) monocromáticas, ou seja, imprime usando apenas a cor preta, gerando "
rem "      uma imagem preta/branca."
rem "= 0 = imprimir imagens (.bmp) em tons de cinza, ou seja, imprime a imagem em varias intensidades "
rem "      diferentes de cinza."
retorno = SATsw.ImprimeImagem_SI300 ("1", "flecha.bmp")
stdout.WriteLine "ImprimeImagem_SI300 (1, flecha.bmp) -> " & retorno
retorno = SATsw.ImprimeImagem_SI300 ("0", "flecha.bmp")
stdout.WriteLine "ImprimeImagem_SI300 (0, flecha.bmp) -> " & retorno


rem "$$$$$$$$$$$$$$$$$  E X T R A T O   /   D A N F E   $$$$$$$$$$$$$$$$$$$$$"

dim XML, dados
Set XML = CreateObject("Scripting.FileSystemObject")
Set handxml = XML.OpenTextFile("CFe.xml", ForReading)
If handxml.AtEndOfStream <> True then
   dados = handxml.ReadAll
End If
handxml.Close

stdout.WriteLine "Imprime Resumo via do consumidor, informando CFe em string"
retorno = SATsw.GeraResumoXML_SI300
stdout.WriteLine retorno
retorno = SATsw.ImprimeXML_SI300(dados)
stdout.WriteLine "Resumo Impresso -> " & retorno

stdout.WriteLine "Imprime Completo via do consumidor"
retorno = SATsw.ImprimeXML_SI300("CFe.xml")
stdout.WriteLine "Extrato completo do consumidor impresso -> " & retorno

dim arqxml1,arqxml2
arqxml1  = "NFCe-contingencia.xml"
arqxml2  = "NFCe-enviada.xml"

rem "A emissão da via do estabelecimento é válida apenas para cupons emitidos em contingência seguindo o manual de"
rem "especificação da NFC-e disponibilizado pela SEFAZ."
stdout.WriteLine "Informa impressao da loja e do consumidor (NFCE) - completa (padrao)"
retorno = SATsw.ViaLojaConsumidorXML_SI300
stdout.WriteLine retorno
retorno = SATsw.ImprimeXML_SI300(arqxml1)
stdout.WriteLine "DANFE completo da via da loja e do consumidor impresso -> " & retorno

stdout.WriteLine "Imprime Completo apenas via da loja (NFCE)"
retorno = SATsw.ViaApenasLojaXML_SI300
stdout.WriteLine retorno
retorno = SATsw.ImprimeXML_SI300(arqxml1)
stdout.WriteLine "DANFE completo da via da loja impresso -> " & retorno

stdout.WriteLine "Informa total recebido (1000.00) para calculo do troco no proximo DANFE (NFCE)"
retorno = SATsw.ValorPagoXML_SI300 ("1000.00")
stdout.WriteLine retorno
stdout.WriteLine "Imprime endereco do consumidor"
retorno = SATsw.PrintEnderecoConsumidorXML_SI300
stdout.WriteLine retorno
retorno = SATsw.ImprimeXML_SI300(arqxml2)
stdout.WriteLine "DANFE completo da via do consumidor impressa -> " & retorno

rem "?????????????????    S T A T U S   ???????????????????????????"
rem "Índice       Retorno 0                     Retorno 1 "
rem "1    Impressora operacional        Impressora em falha" 
rem "2    Off Line                      On Line "
rem "3    Papel OK                      Fim de papel "
rem "4    Guilhotina não detectada      Guilhotina detectada "
rem "5    Tampa térmica fechada         Tampa térmica aberta "
rem "6    Sem papel sobre o sensor      Papel posicionado sobre o sensor "
rem "7    Gaveta fechada                Gaveta aberta. "
rem "8    Cheque inserido               SEM CHEQUE."                   
retorno = SATsw.Status_SI300 ("1")  
stdout.WriteLine "Operacional?    = " & retorno
retorno = SATsw.Status_SI300 ("2")  
stdout.WriteLine "ON/OFF?         = " & retorno
retorno = SATsw.Status_SI300 ("3")  
stdout.WriteLine "FIM Papel?      = " & retorno
retorno = SATsw.Status_SI300 ("4")  
stdout.WriteLine "Guilhotina?     = " & retorno
retorno = SATsw.Status_SI300 ("5")  
stdout.WriteLine "Tampa?          = " & retorno
retorno = SATsw.Status_SI300 ("6")  
stdout.WriteLine "Papel acabando? = " & retorno
retorno = SATsw.Status_SI300 ("7")  
stdout.WriteLine "Gaveta?         = " & retorno
retorno = SATsw.Status_SI300 ("8")  
stdout.WriteLine "Cheque?         = " & retorno

retorno = SATsw.StatusGuilhotina_SI300
stdout.WriteLine "Guilhotina?  = " & retorno


