<commit_before><?php namespace PhpNFe\Tools;

class Sefaz
{
    /**
     * Ambientes.
     */
    const ambHomologacao = 'homologacao';
    const ambProducao = 'producao';

    public static $ambientes = [
        self::ambProducao => '1',
        self::ambHomologacao => '2',
    ];

    /**
     * Funções.
     */
    const mtAutoriza = 'autoriza';
    const mtCancela = 'cancela';
    const mtCartaCorrecao = 'cartacorrecao';
    const mtInutilizacao = 'inutilizacao';

    /**
     * Portal.
     */
    const urlPortal = 'http://www.portalfiscal.inf.br/nfe';

    /**
     * Lista de servidores.
     * @var array
     */
    protected static $servers = [
        // SC
        '42' => [
            self::ambHomologacao => [
                self::mtAutoriza => [
                    'method' => 'nfeAutorizacaoLote',
                    'op' => 'NfeAutorizacao',
                    'versao' => '3.10',
                    'url' => 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx',
                ],
                self::mtCancela => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                ],
                self::mtCartaCorrecao => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                ],
                self::mtInutilizacao => [
                    'method' => 'nfeInutilizacaoNF2',
                    'op' => 'NfeInutilizacao2',
                    'versao' => '3.10',
                    'url' => 'https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx',
                ],
            ],
            self::ambProducao => [
                self::mtAutoriza => [
                    'method' => 'nfeAutorizacaoLote',
                    'op' => 'NfeAutorizacao',
                    'versao' => '3.10',
                    'url' => 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx',
                ],
                self::mtCancela => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                ],
                self::mtCartaCorrecao => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                ],
                self::mtInutilizacao => [
                    'method' => 'nfeInutilizacaoNF2',
                    'op' => 'NfeInutilizacao2',
                    'versao' => '3.10',
                    'url' => 'https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx',
                ],
            ],
        ],
    ];

    /**
     * Retorna configurações do metodo.
     *
     * @param $ambiente
     * @param $cuf
     * @param $method
     * @return MethodSefaz
     * @throws \Exception
     */
    public static function getMethodInfo($ambiente, $cuf, $method)
    {
        // Verificar se estado foi definido
        if (array_key_exists($cuf, self::$servers) != true) {
            throw new \Exception(sprintf('Código do estado %s não foi encontrado na difinição de servidores' . $cuf));
        }

        // Verificar se ambiente foi definido no estado<commit_msg>Servidor Produção - PR, RS, SP e RJ<commit_after><?php namespace PhpNFe\Tools;

class Sefaz
{
    /**
     * Ambientes.
     */
    const ambHomologacao = 'homologacao';
    const ambProducao = 'producao';

    public static $ambientes = [
        self::ambProducao => '1',
        self::ambHomologacao => '2',
    ];

    /**
     * Funções.
     */
    const mtAutoriza = 'autoriza';
    const mtCancela = 'cancela';
    const mtCartaCorrecao = 'cartacorrecao';
    const mtInutilizacao = 'inutilizacao';

    /**
     * Portal.
     */
    const urlPortal = 'http://www.portalfiscal.inf.br/nfe';

    /**
     * Lista de servidores.
     * @var array
     */
    protected static $servers = [
        // RJ
        '33' => [
            self::ambHomologacao => [
                self::mtAutoriza => [
                    'method' => 'nfeAutorizacaoLote',
                    'op' => 'NfeAutorizacao',
                    'versao' => '3.10',
                    'url' => 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx',
                ],
                self::mtCancela => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                ],
                self::mtCartaCorrecao => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                ],
                self::mtInutilizacao => [
                    'method' => 'nfeInutilizacaoNF2',
                    'op' => 'NfeInutilizacao2',
                    'versao' => '3.10',
                    'url' => 'https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx',
                ],
            ],
            self::ambProducao => [
                self::mtAutoriza => [
                    'method' => 'nfeAutorizacaoLote',
                    'op' => 'NfeAutorizacao',
                    'versao' => '3.10',
                    'url' => 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx',
                ],
                self::mtCancela => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                ],
                self::mtCartaCorrecao => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                ],
                self::mtInutilizacao => [
                    'method' => 'nfeInutilizacaoNF2',
                    'op' => 'NfeInutilizacao2',
                    'versao' => '3.10',
                    'url' => 'https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx',
                ],
            ],
        ],
        // SP
        '35' => [
            self::ambHomologacao => [
                self::mtAutoriza => [
                    'method' => 'nfeAutorizacaoLote',
                    'op' => 'NfeAutorizacao',
                    'versao' => '3.10',
                    'url' => 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx',
                ],
                self::mtCancela => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://homologacao.nfe.fazenda.sp.gov.br/ws/recepcaoevento.asmx',
                ],
                self::mtCartaCorrecao => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://homologacao.nfe.fazenda.sp.gov.br/ws/recepcaoevento.asmx',
                ],
                self::mtInutilizacao => [
                    'method' => 'nfeInutilizacaoNF2',
                    'op' => 'NfeInutilizacao2',
                    'versao' => '3.10',
                    'url' => 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeinutilizacao2.asmx',
                ],
            ],
            self::ambProducao => [
                self::mtAutoriza => [
                    'method' => 'nfeAutorizacaoLote',
                    'op' => 'NfeAutorizacao',
                    'versao' => '3.10',
                    'url' => '>https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx',
                ],
                self::mtCancela => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe.fazenda.sp.gov.br/ws/recepcaoevento.asmx',
                ],
                self::mtCartaCorrecao => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe.fazenda.sp.gov.br/ws/recepcaoevento.asmx',
                ],
                self::mtInutilizacao => [
                    'method' => 'nfeInutilizacaoNF2',
                    'op' => 'NfeInutilizacao2',
                    'versao' => '3.10',
                    'url' => 'https://nfe.fazenda.sp.gov.br/ws/nfeinutilizacao2.asmx',
                ],
            ],
        ],
        // PR
        '41' => [
            self::ambHomologacao => [
                self::mtAutoriza => [
                    'method' => 'nfeAutorizacaoLote',
                    'op' => 'NfeAutorizacao',
                    'versao' => '3.10',
                    'url' => 'https://homologacao.nfe.fazenda.pr.gov.br/nfe/NFeAutorizacao3',
                ],
                self::mtCancela => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://homologacao.nfe.fazenda.pr.gov.br/nfe/NFeRecepcaoEvento',
                ],
                self::mtCartaCorrecao => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://homologacao.nfe.fazenda.pr.gov.br/nfe/NFeRecepcaoEvento',
                ],
                self::mtInutilizacao => [
                    'method' => 'nfeInutilizacaoNF',
                    'op' => 'NfeInutilizacao2',
                    'versao' => '3.10',
                    'url' => 'https://homologacao.nfe.fazenda.pr.gov.br/nfe/NFeInutilizacao3',
                ],
            ],
            self::ambProducao => [
                self::mtAutoriza => [
                    'method' => 'nfeAutorizacaoLote',
                    'op' => 'NfeAutorizacao',
                    'versao' => '3.10',
                    'url' => '>https://nfe.fazenda.pr.gov.br/nfe/NFeAutorizacao3',
                ],
                self::mtCancela => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe.fazenda.pr.gov.br/nfe/NFeRecepcaoEvento',
                ],
                self::mtCartaCorrecao => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe.fazenda.pr.gov.br/nfe/NFeRecepcaoEvento',
                ],
                self::mtInutilizacao => [
                    'method' => 'nfeInutilizacaoNF3',
                    'op' => 'NfeInutilizacao2',
                    'versao' => '3.10',
                    'url' => 'https://nfe.fazenda.pr.gov.br/nfe/NFeInutilizacao3',
                ],
            ],
        ],
        // SC
        '42' => [
            self::ambHomologacao => [
                self::mtAutoriza => [
                    'method' => 'nfeAutorizacaoLote',
                    'op' => 'NfeAutorizacao',
                    'versao' => '3.10',
                    'url' => 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx',
                ],
                self::mtCancela => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                ],
                self::mtCartaCorrecao => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                ],
                self::mtInutilizacao => [
                    'method' => 'nfeInutilizacaoNF2',
                    'op' => 'NfeInutilizacao2',
                    'versao' => '3.10',
                    'url' => 'https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx',
                ],
            ],
            self::ambProducao => [
                self::mtAutoriza => [
                    'method' => 'nfeAutorizacaoLote',
                    'op' => 'NfeAutorizacao',
                    'versao' => '3.10',
                    'url' => 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx',
                ],
                self::mtCancela => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                ],
                self::mtCartaCorrecao => [
                    'method' => 'nfeRecepcaoEvento',
                    'op' => 'RecepcaoEvento',
                    'versao' => '1.00',
                    'url' => 'https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                ],
                self::mtInutilizacao => [
                    'method' => 'nfeInutilizacaoNF2',
                    'op' => 'NfeInutilizacao2',
                    'versao' => '3.10',
                    'url' => 'https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx',
                ],
            ],
            // RS
            '43' => [
                self::ambHomologacao => [
                    self::mtAutoriza => [
                        'method' => 'nfeAutorizacaoLote',
                        'op' => 'NfeAutorizacao',
                        'versao' => '3.10',
                        'url' => 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx',
                    ],
                    self::mtCancela => [
                        'method' => 'nfeRecepcaoEvento',
                        'op' => 'RecepcaoEvento',
                        'versao' => '1.00',
                        'url' => 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                    ],
                    self::mtCartaCorrecao => [
                        'method' => 'nfeRecepcaoEvento',
                        'op' => 'RecepcaoEvento',
                        'versao' => '1.00',
                        'url' => 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                    ],
                    self::mtInutilizacao => [
                        'method' => 'nfeInutilizacaoNF2',
                        'op' => 'NfeInutilizacao2',
                        'versao' => '3.10',
                        'url' => 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx',
                    ],
                ],
                self::ambProducao => [
                    self::mtAutoriza => [
                        'method' => 'nfeAutorizacaoLote',
                        'op' => 'NfeAutorizacao',
                        'versao' => '3.10',
                        'url' => '>https://nfe.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx',
                    ],
                    self::mtCancela => [
                        'method' => 'nfeRecepcaoEvento',
                        'op' => 'RecepcaoEvento',
                        'versao' => '1.00',
                        'url' => 'https://nfe.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                    ],
                    self::mtCartaCorrecao => [
                        'method' => 'nfeRecepcaoEvento',
                        'op' => 'RecepcaoEvento',
                        'versao' => '1.00',
                        'url' => 'https://nfe.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
                    ],
                    self::mtInutilizacao => [
                        'method' => 'nfeInutilizacaoNF2',
                        'op' => 'NfeInutilizacao2',
                        'versao' => '3.10',
                        'url' => 'https://nfe.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx',
                    ],
                ],
            ],
        ],
    ];

    /**
     * Retorna configurações do metodo.
     *
     * @param $ambiente
     * @param $cuf
     * @param $method
     * @return MethodSefaz
     * @throws \Exception
     */
    public static function getMethodInfo($ambiente, $cuf, $method)
    {
        // Verificar se estado foi definido
        if (array_key_exists($cuf, self::$servers) != true) {
            throw new \Exception(sprintf('Código do estado %s não foi encontrado na difinição de servidores' . $cuf));
        }

        // Verificar se ambiente foi definido no estado
{'fraction_non_alphanumeric': 0.1512614422862246, 'fraction_numerical': 0.010995757981692342, 'mean_word_length': 1.1820728291316527, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 268, 'https://': 48, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7206564', 'n_tokens_mistral': 6205, 'n_tokens_neox': 5851, 'n_words': 649}