def xml_inactivate(self, cr, uid, ids, inv, ei_obj, cert_name,
                    context=None):
     proc_nfe = ProcessadorNFe()
     proc_nfe.ambiente = 1 if inv.company_id.ei_environment == 'production' else 2
     proc_nfe.versao = '3.10'
     proc_nfe.estado = inv.company_id.partner_id.l10n_br_city_id.state_id.code
     proc_nfe.certificado.senha = inv.company_id.nfe_a1_password
     proc_nfe.certificado.arquivo = cert_name
     proc_nfe.salvar_arquivos = False
     processo = proc_nfe.inutilizar_nota(
         ambiente=ei_obj['ambiente'], codigo_estado=ei_obj['UF'],
         ano=ei_obj['ano'], cnpj=ei_obj['CNPJ/CPF'], serie=ei_obj['serie'],
         numero_inicial=ei_obj['numero_inicial'],
         numero_final=ei_obj['numero_final'],
         justificativa=ei_obj['justificativa'])
     if processo.resposta.infInut.cStat.valor == '102':
         result = {
             'action': 'inactivate',
             'message': processo.resposta.infInut.xMotivo.valor,
             'ei_status': 'inactive'}
     else:
         msg = processo.resposta.infInut.cStat.valor + ' - ' + processo.resposta.xMotivo.valor
         result = {
             'action': 'inactivate',
             'message': msg
         }
     return result
Ejemplo n.º 2
0
def test_consultar_situacao_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.consultar_servico()

    print processo.envio.xml
    print
    print processo.resposta.xml
    print
    assert processo.resposta.reason != 'Forbidden'
    def xml_send(self, cr, uid, ids, inv, ei_obj, cert_name, context=None):
        proc_nfe = ProcessadorNFe()
        proc_nfe.ambiente = 1 if inv.company_id.ei_environment == 'production' else 2
        proc_nfe.versao = '3.10'
        proc_nfe.estado = inv.company_id.partner_id.l10n_br_city_id.state_id.code
        proc_nfe.certificado.senha = inv.company_id.nfe_a1_password
        proc_nfe.certificado.arquivo = cert_name
        proc_nfe.salvar_arquivos = False
        for processo in proc_nfe.processar_notas([ei_obj]):
            result = {
                'action': 'send',
                'ei_status': 'failed',
                'message': processo.resposta.cStat.valor + '-' + processo.resposta.xMotivo.valor,
                'ei_access_key': ei_obj.chave}
            if processo.webservice == 1:
                for prot in processo.resposta.protNFe:
                    result['message'] = prot.infProt.cStat.valor + '-' + prot.infProt.xMotivo.valor
                    if prot.infProt.cStat.valor in ('100', '150'):
                        result['ei_protocol'] = prot.infProt.nProt.valor
                        result['ei_status'] = 'confirmed'
                        result['ei_date'] = prot.infProt.dhRecbto.valor
                        result['xml_send'] = ei_obj.xml
                        result['ei_image'] = proc_nfe.danfe.conteudo_pdf
                        result['ei_code'] = inv.internal_number

            elif processo.resposta.cStat.valor in ('100', '150'):
                result['ei_status'] = 'confirmed'
                result['ei_date'] = processo.resposta.protNFe.infProt.dhRecbto.valor
                result['ei_protocol'] = processo.resposta.protNFe.infProt.nProt.valor
                result['xml_send'] = ei_obj.xml
                result['ei_code'] = inv.internal_number

        return result
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
def __processo(company):
    p = ProcessadorNFe()
    p.ambiente = int(company.nfe_environment)
    p.estado = company.partner_id.l10n_br_city_id.state_id.code
    p.certificado.stream_certificado = base64.decodestring(company.nfe_a1_file)
    p.certificado.senha = company.nfe_a1_password
    p.salvar_arquivos = False
    p.contingencia_SCAN = False
    return p
Ejemplo n.º 6
0
def test_inutilizar_notas_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.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 xml_cancel(self, cr, uid, ids, inv, ei_obj, cert_name, context=None):
        proc_nfe = ProcessadorNFe()
        proc_nfe.ambiente = 1 if inv.company_id.ei_environment == 'production' else 2
        proc_nfe.versao = '3.10'
        proc_nfe.estado = inv.company_id.partner_id.l10n_br_city_id.state_id.code
        proc_nfe.certificado.senha = inv.company_id.nfe_a1_password
        proc_nfe.certificado.arquivo = cert_name
        proc_nfe.salvar_arquivos = False
        processo = proc_nfe.enviar_lote_cancelamento(lista_eventos=[ei_obj])
        result = {
            'action': 'cancel',
            'message': processo.resposta.xMotivo.valor
        }
        for prot in processo.resposta.retEvento:
            result['message'] = prot.infEvento.cStat.valor + '-' + processo.resposta.xMotivo.valor
            if prot.infEvento.cStat.valor == '135':
                result.update({'ei_status': 'cancelled'})

        return result
 def xml_correction_letter(self, cr, uid, ids, inv, ei_obj, cert_name,
                           context=None):
     proc_nfe = ProcessadorNFe()
     proc_nfe.ambiente = 1 if inv.company_id.ei_environment == 'production' else 2
     proc_nfe.versao = '3.10'
     proc_nfe.estado = inv.company_id.partner_id.l10n_br_city_id.state_id.code
     proc_nfe.certificado.senha = inv.company_id.nfe_a1_password
     proc_nfe.certificado.arquivo = cert_name
     proc_nfe.salvar_arquivos = False
     processo = proc_nfe.enviar_lote_cce(lista_eventos=[ei_obj])
     if processo.resposta.cStat.valor == '128':
         result = {
             'action': 'correction_letter',
             'message': processo.resposta.xMotivo.valor
         }
     else:
         result = {
             'action': 'correction_letter',
             'message': '%s - %s' % (
                 processo.resposta.cStat.valor,
                 processo.resposta.xMotivo.valor)
             }
     return result
from pysped.nfe import ProcessadorNFe
from pysped.nfe.webservices_flags import *
from os.path import abspath, dirname

FILE_DIR = abspath(dirname(__file__))

if __name__ == '__main__':
    p = ProcessadorNFe()
    p.versao              = u'2.00'
    p.estado              = u'SP'
    # arquivo 'certificado_caminho.txt' deve conter o caminho para o 'certificado.pfx'
    p.certificado.arquivo = open(FILE_DIR+'/certificado_caminho.txt').read().strip()
    # arquivo 'certificado_senha.txt' deve conter a senha para o 'certificado.pfx'
    p.certificado.senha   = open(FILE_DIR+'/certificado_senha.txt').read().strip()
    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')
Ejemplo n.º 10
0
def test_gerar_enviar_nota_20(cert_info):
    from pysped.nfe import ProcessadorNFe
    from pysped.nfe.manual_401 import *
    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""

    #
    # 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"