def test_cancelar_nota_20(cert_info):
    from pysped_nfe import ProcessadorNFe
    from pysped_nfe.webservices_flags import *

    p = ProcessadorNFe()
    p.versao = u'2.00'
    p.estado = u'SP'
    p.certificado.arquivo = cert_info.arquivo
    p.certificado.senha = cert_info.senha
    p.salvar_arquivos = True
    p.contingencia_SCAN = False
    p.caminho = u''

    #
    # O retorno de cada webservice é um dicionário
    # estruturado da seguinte maneira:
    # { TIPO_DO_WS_EXECUTADO: {
    #       u'envio'   : InstanciaDaMensagemDeEnvio,
    #       u'resposta': InstanciaDaMensagemDeResposta,
    #       }
    # }
    #
    processo = p.cancelar_nota(
        chave_nfe=u'35100411111111111111551010000000271123456789',
        numero_protocolo=u'135100018751878',
        justificativa=u'Somente um teste de cancelamento')

    print processo.envio.xml
    print
    print processo.resposta.xml
    print
    assert processo.resposta.reason
def test_consultar_situacao_20(cert_info):
    from pysped_nfe import ProcessadorNFe

    p = ProcessadorNFe()
    p.versao = u'2.00'
    p.estado = u'SP'
    p.certificado.arquivo = cert_info.arquivo
    p.certificado.senha = cert_info.senha
    p.salvar_arquivos = True
    p.contingencia_SCAN = False
    p.caminho = u''

    #
    # O retorno de cada webservice é um dicionário
    # estruturado da seguinte maneira:
    # { TIPO_DO_WS_EXECUTADO: {
    #       u'envio'   : InstanciaDaMensagemDeEnvio,
    #       u'resposta': InstanciaDaMensagemDeResposta,
    #       }
    # }
    #
    processo = p.consultar_servico()

    print processo.envio.xml
    print
    print processo.resposta.xml
    print
    assert processo.resposta.reason != 'Forbidden'
def test_cancelar_nota_20(cert_info):
    from pysped_nfe import ProcessadorNFe
    from pysped_nfe.webservices_flags import *

    p = ProcessadorNFe()
    p.versao = u'2.00'
    p.estado = u'SP'
    p.certificado.arquivo = cert_info.arquivo
    p.certificado.senha = cert_info.senha
    p.salvar_arquivos = True
    p.contingencia_SCAN = False
    p.caminho = u''

    #
    # O retorno de cada webservice é um dicionário
    # estruturado da seguinte maneira:
    # { TIPO_DO_WS_EXECUTADO: {
    #       u'envio'   : InstanciaDaMensagemDeEnvio,
    #       u'resposta': InstanciaDaMensagemDeResposta,
    #       }
    # }
    #
    processo = p.cancelar_nota(chave_nfe=u'35100411111111111111551010000000271123456789',
        numero_protocolo=u'135100018751878',
        justificativa=u'Somente um teste de cancelamento')

    print processo.envio.xml
    print
    print processo.resposta.xml
    print
    assert processo.resposta.reason
def test_consultar_situacao_20(cert_info):
    from pysped_nfe import ProcessadorNFe

    p = ProcessadorNFe()
    p.versao = u'2.00'
    p.estado = u'SP'
    p.certificado.arquivo = cert_info.arquivo
    p.certificado.senha = cert_info.senha
    p.salvar_arquivos = True
    p.contingencia_SCAN = False
    p.caminho = u''

    #
    # O retorno de cada webservice é um dicionário
    # estruturado da seguinte maneira:
    # { TIPO_DO_WS_EXECUTADO: {
    #       u'envio'   : InstanciaDaMensagemDeEnvio,
    #       u'resposta': InstanciaDaMensagemDeResposta,
    #       }
    # }
    #
    processo = p.consultar_servico()

    print processo.envio.xml
    print
    print processo.resposta.xml
    print
    assert processo.resposta.reason != 'Forbidden'
def test_inutilizar_notas_20(cert_info):
    from pysped_nfe import ProcessadorNFe

    p = ProcessadorNFe()
    p.versao = u'2.00'
    p.estado = u'SP'
    p.certificado.arquivo = cert_info.arquivo
    p.certificado.senha = cert_info.senha
    p.salvar_arquivos = True
    p.contingencia_SCAN = False
    p.caminho = u''

    #
    # O retorno de cada webservice é um dicionário
    # estruturado da seguinte maneira:
    # { TIPO_DO_WS_EXECUTADO: {
    #       u'envio'   : InstanciaDaMensagemDeEnvio,
    #       u'resposta': InstanciaDaMensagemDeResposta,
    #       }
    # }
    #
    processo = p.inutilizar_nota(cnpj=u'11111111111111',
        serie=u'101',
        numero_inicial=18,
        justificativa=u'Testando a inutilização de NF-e')

    print processo.envio.xml
    print
    print processo.resposta.xml
    print
    print "NOTA UNICA"
    assert processo.resposta.reason

    #
    # Inutilizar uma faixa de numeração
    #
    processo = p.inutilizar_nota(cnpj=u'11111111111111',
        serie=u'101',
        numero_inicial=18,
        numero_final=28,
        justificativa=u'Testando a inutilização de NF-e')

    print processo.envio.xml
    print
    print processo.resposta.xml
    print
    print "FAIXA DE NOTAS"
    assert processo.resposta.reason
def test_gerar_enviar_nota_20(cert_info):
    from pysped_nfe import ProcessadorNFe
    from pysped_nfe.manual_401 import NFe_200, Det_200
    from pysped_nfe.webservices_flags import UF_CODIGO

    p = ProcessadorNFe()
    p.versao = u'2.00'
    p.estado = u'SP'
    p.certificado.arquivo = cert_info.arquivo
    p.certificado.senha = cert_info.senha
    p.salvar_arquivos = True
    p.contingencia_SCAN = False
    p.caminho = u''

    #
    # Instancia uma NF-e
    #
    n = NFe_200()

    #
    # Identificação da NF-e
    #
    n.infNFe.ide.cUF.valor     = UF_CODIGO[u'SP']
    n.infNFe.ide.natOp.valor   = u'Venda de produto do estabelecimento'
    n.infNFe.ide.indPag.valor  = 2
    n.infNFe.ide.serie.valor   = 101
    n.infNFe.ide.nNF.valor     = 37
    n.infNFe.ide.dEmi.valor    = datetime(2011, 5, 25)
    n.infNFe.ide.dSaiEnt.valor = datetime(2011, 5, 25)
    n.infNFe.ide.cMunFG.valor  = 3513801
    n.infNFe.ide.tpImp.valor   = 1
    n.infNFe.ide.tpEmis.valor  = 1
    n.infNFe.ide.indPag.valor  = 1
    n.infNFe.ide.finNFe.valor  = 1
    n.infNFe.ide.procEmi.valor = 0
    n.infNFe.ide.verProc.valor = u'TaugaRS Haveno 1.0'

    #
    # Emitente
    #
    n.infNFe.emit.CNPJ.valor  = u'11111111111111'
    n.infNFe.emit.xNome.valor = u'Razao Social Emitente Ltda. EPP'
    n.infNFe.emit.xFant.valor = u'Bromelia'
    n.infNFe.emit.enderEmit.xLgr.valor    = u'R. Ibiuna'
    n.infNFe.emit.enderEmit.nro.valor     = u'729'
    n.infNFe.emit.enderEmit.xCpl.valor    = u'sala 3'
    n.infNFe.emit.enderEmit.xBairro.valor = u'Jd. Guanabara'
    n.infNFe.emit.enderEmit.cMun.valor    = u'3552205'
    n.infNFe.emit.enderEmit.xMun.valor    = u'Sorocaba'
    n.infNFe.emit.enderEmit.UF.valor      = u'SP'
    n.infNFe.emit.enderEmit.CEP.valor     = u'18085520'
    #n.infNFe.emit.enderEmit.cPais.valor   = u'1058'
    #n.infNFe.emit.enderEmit.xPais.valor   = u'Brasil'
    n.infNFe.emit.enderEmit.fone.valor    = u'1534110602'
    n.infNFe.emit.IE.valor = u'111111111111'
    #
    # Regime tributário
    #
    n.infNFe.emit.CRT.valor = u'1'

    #
    # Destinatário
    #
    n.infNFe.dest.CNPJ.valor  = u'11143192000101'
    n.infNFe.dest.xNome.valor = u'Razao Social Destinatario Ltda. EPP'
    n.infNFe.dest.enderDest.xLgr.valor    = u'R. Ibiuna'
    n.infNFe.dest.enderDest.nro.valor     = u'729'
    n.infNFe.dest.enderDest.xCpl.valor    = u'sala 3'
    n.infNFe.dest.enderDest.xBairro.valor = u'Jd. Morumbi'
    n.infNFe.dest.enderDest.cMun.valor    = u'3552205'
    n.infNFe.dest.enderDest.xMun.valor    = u'Sorocaba'
    n.infNFe.dest.enderDest.UF.valor      = u'SP'
    n.infNFe.dest.enderDest.CEP.valor     = u'18085520'
    #n.infNFe.dest.enderDest.cPais.valor   = u'1058'
    #n.infNFe.dest.enderDest.xPais.valor   = u'Brasil'
    n.infNFe.dest.enderDest.fone.valor    = u'1534110602'
    n.infNFe.dest.IE.valor = u'795009239110'

    #
    # Emeio
    #
    n.infNFe.dest.email.valor = u'*****@*****.**'

    #
    # Detalhe
    #
    d1 = Det_200()

    d1.nItem.valor = 1
    d1.prod.cProd.valor    = u'codigo do produto um'
    d1.prod.cEAN.valor     = u''
    d1.prod.xProd.valor    = u'Descricao do produto'
    d1.prod.NCM.valor      = u'94034000'
    d1.prod.EXTIPI.valor   = u''
    d1.prod.CFOP.valor     = u'5101'
    d1.prod.uCom.valor     = u'UND'
    d1.prod.qCom.valor     = u'100.00'
    d1.prod.vUnCom.valor   = u'10.0000'
    d1.prod.vProd.valor    = u'1000.00'
    d1.prod.cEANTrib.valor = u''
    d1.prod.uTrib.valor    = d1.prod.uCom.valor
    d1.prod.qTrib.valor    = d1.prod.qCom.valor
    d1.prod.vUnTrib.valor  = d1.prod.vUnCom.valor
    d1.prod.vFrete.valor   = u'0.00'
    d1.prod.vSeg.valor     = u'0.00'
    d1.prod.vDesc.valor    = u'0.00'
    d1.prod.vOutro.valor   = u'0.00'
    #
    # Produto entra no total da NF-e
    #
    d1.prod.indTot.valor   = 1

    #
    # Impostos
    #
    d1.imposto.regime_tributario = 1
    d1.imposto.ICMS.CSOSN.valor   = u'400'
    #d1.imposto.ICMS.vBC.valor    = u'1000.00'

    d1.imposto.IPI.CST.valor    = u'99'
    #d1.imposto.IPI.vBC.valor    = u'1000.00'
    #d1.imposto.IPI.pIPI.valor   = u'10.00'
    #d1.imposto.IPI.vIPI.valor   = u'100.00'

    d1.imposto.PIS.CST.valor    = u'06'
    #d1.imposto.PIS.vBC.valor    = u'1000.00'
    #d1.imposto.PIS.pPIS.valor   = u'0.65'
    #d1.imposto.PIS.vPIS.valor   = u'6.50'

    d1.imposto.COFINS.CST.valor    = u'06'
    #d1.imposto.COFINS.vBC.valor    = u'1000.00'
    #d1.imposto.COFINS.pCOFINS.valor   = u'3.00'
    #d1.imposto.COFINS.vCOFINS.valor   = u'30.00'

    #
    # Detalhe
    #
    d2 = Det_200()

    d2.nItem.valor = 2
    d2.prod.cProd.valor    = u'codigo do produto dois'
    d2.prod.cEAN.valor     = u''
    d2.prod.xProd.valor    = u'Descricao do produto'
    d2.prod.NCM.valor      = u'94034000'
    d2.prod.EXTIPI.valor   = u''
    d2.prod.CFOP.valor     = u'5101'
    d2.prod.uCom.valor     = u'UND'
    d2.prod.qCom.valor     = u'100.00'
    d2.prod.vUnCom.valor   = u'10.0000'
    d2.prod.vProd.valor    = u'1000.00'
    d2.prod.cEANTrib.valor = u''
    d2.prod.uTrib.valor    = d1.prod.uCom.valor
    d2.prod.qTrib.valor    = d1.prod.qCom.valor
    d2.prod.vUnTrib.valor  = d1.prod.vUnCom.valor
    d2.prod.vFrete.valor   = u'0.00'
    d2.prod.vSeg.valor     = u'0.00'
    d2.prod.vDesc.valor    = u'0.00'
    d2.prod.vOutro.valor   = u'0.00'
    #
    # Produto entra no total da NF-e
    #
    d2.prod.indTot.valor   = 1

    #
    # Impostos
    #
    d2.imposto.regime_tributario = 1
    d2.imposto.ICMS.CSOSN.valor   = u'400'
    #d2.imposto.ICMS.vBC.valor    = u'1000.00'

    d2.imposto.IPI.CST.valor    = u'99'
    #d2.imposto.IPI.vBC.valor    = u'1000.00'
    #d2.imposto.IPI.pIPI.valor   = u'10.00'
    #d2.imposto.IPI.vIPI.valor   = u'100.00'

    d2.imposto.PIS.CST.valor    = u'06'
    #d2.imposto.PIS.vBC.valor    = u'1000.00'
    #d2.imposto.PIS.pPIS.valor   = u'0.65'
    #d2.imposto.PIS.vPIS.valor   = u'6.50'

    d2.imposto.COFINS.CST.valor    = u'06'
    #d2.imposto.COFINS.vBC.valor    = u'1000.00'
    #d2.imposto.COFINS.pCOFINS.valor   = u'3.00'
    #d2.imposto.COFINS.vCOFINS.valor   = u'30.00'



    #
    # Os primeiros 188 caracteres desta string
    # são todos os caracteres válidos em tags da NF-e
    #
    #d1.infAdProd.valor = u'!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ·¸¹º»¼½¾¿À'

    #
    # Inclui o detalhe na NF-e
    #
    n.infNFe.det.append(d1)

    #
    # Totais
    #
    n.infNFe.total.ICMSTot.vBC.valor     = u'0.00'
    n.infNFe.total.ICMSTot.vICMS.valor   = u'0.00'
    n.infNFe.total.ICMSTot.vBCST.valor   = u'0.00'
    n.infNFe.total.ICMSTot.vST.valor     = u'0.00'
    n.infNFe.total.ICMSTot.vProd.valor   = u'1000.00'
    n.infNFe.total.ICMSTot.vFrete.valor  = u'0.00'
    n.infNFe.total.ICMSTot.vSeg.valor    = u'0.00'
    n.infNFe.total.ICMSTot.vDesc.valor   = u'0.00'
    n.infNFe.total.ICMSTot.vII.valor     = u'0.00'
    n.infNFe.total.ICMSTot.vIPI.valor    = u'0.00'
    n.infNFe.total.ICMSTot.vPIS.valor    = u'0.00'
    n.infNFe.total.ICMSTot.vCOFINS.valor = u'0.00'
    n.infNFe.total.ICMSTot.vOutro.valor  = u'0.00'
    n.infNFe.total.ICMSTot.vNF.valor     = u'0.00'

    n.infNFe.infAdic.infCpl.valor = u'Documento emitido por ME ou EPP optante pelo Simples Nacional. ' \
                                    u'Nao gera direito a credito fiscal de IPI. '
    #
    # O retorno de cada webservice é um dicionário
    # estruturado da seguinte maneira:
    # { TIPO_DO_WS_EXECUTADO: {
    #       u'envio'   : InstanciaDaMensagemDeEnvio,
    #       u'resposta': InstanciaDaMensagemDeResposta,
    #       }
    # }
    #
    for processo in p.processar_notas([n]):
        print
        print
        print processo.envio.xml
        print
        print processo.resposta.xml
        print
        assert processo.resposta.reason != u'Forbidden'