Ir para conteúdo

POWERED BY:

Alex Oliveira Dos Santos

Erro ao gerar xml com NFePHP - Duplicando node det

Recommended Posts

Boa tarde, após pesquisar muito e passar 2 dias tentando resolver estou aqui pedindo um super help.

Estou utilizando a classe NfePhp mas ao gerar o xml, o mesmo amontoa os nós xml "det" tudo um dentro do outro, e eu não faço ideia do porque e como corrigir, por postar o arquivo que monto e o xml gerado, além de uma imagem ilustrativa do problema:

 

 

 

<?php
/**
 * Created by Alex O. Santos.
 * Date: 30/09/2019
 * Time: 10:29
 */

//namespace Classes;

//use NFePHP\NFe\Make;
use NFePHP\NFe;
use NFePHP\NFe\Make;

use NFePHP\NFe\Tools;
use NFePHP\Common\Certificate;

//use stdClass;

class GerarNFE
{
    private $config;
    private $tools;
    public function __construct($config)
    {


        $this->config = $config;

        $configJson = json_encode($config);//adicionado novo 29-06-2020

        $certificadoDigital = file_get_contents("asasasasa.pfx");
        $password = '123456';
        $this->tools = new Tools($configJson, Certificate::readPfx($certificadoDigital, $password));
        //$xmlAssinado = $tools->signNFe($xml);


    }

    public function GerarNFE(){
        //cria a nota vazia

        $nfe = new Make();

        /** INF NFE **/
        $std = new \stdClass();
        $std->versao = '4.00'; //versão do layout
        //$std->Id = 'NFe35150271780456000160550010000000021800700082'; //se o Id de 44 digitos não for passado será gerado automaticamente
        $std->pk_nItem = null; //deixe essa variavel sempre como NULL
        $nfe->taginfNFe($std);

        /** IDE **/
        $std = new \stdClass();
        $std->cUF = 42;//codigo uf ibge
        $std->cNF = rand(11111111, 99999999);// 80070008 aleatorio
        $std->natOp = 'Venda de mercadoria adquirida ou recebida de terceiros';//natureza de operação
        $std->indPag = 0; //NÃO EXISTE MAIS NA VERSÃO 4.00
        $std->mod = 55;
        $std->serie = 1;
        $std->nNF = 2;//numero da nota
        $std->dhEmi = date("Y-m-d\TH:i:sP");//2015-02-19T13:48:00-02:00
        $std->dhSaiEnt = date("Y-m-d\TH:i:sP");//estava null
        $std->tpNF = 1;//entrada ou saida
        $std->idDest = 1;//dentro ou fora do estado *** 1=Operação interna, 2=Operação interestadual, 3=Operação com exterior
        $std->cMunFG = 4204608;//criciuma conforme ibge
        $std->tpImp = 1;//2=paisagem ou 1=retrato
        $std->tpEmis = 1;//normal ou contingencia
        $std->cDV = 3;//digito verificador
        $std->tpAmb = 2;//1 = Produção[É o ambiente designado para documentos com valor fiscal]. 2= Homologação[É o ambiente de testes].
        $std->finNFe = 1;//complementar ou normal ou ajuste
        $std->indFinal = 1;//se é consumidor final ou nao
        $std->indPres = 1;//nao esta presente presencial ou nao
        $std->procEmi = 0;//sempre zero aplicativo contribuite(erp)
        $std->verProc = '1.0.0';//versão do erp
        $std->dhCont = null;//data e hora que entrou em contingencia
        $std->xJust = null;//justificativa se entrou em contingencia
        $nfe->tagide($std);

        /** EMITENTE **/
        $std = new \stdClass();
        $std->xNome = "NET BIBLIAS COMERCIO DE ARTIGOS EVANGELICOS LTDA-ME";//razão social
        $std->xFant = "NET BIBLIAS COMERCIO DE ARTIGOS EVANGELICOS LTDA-ME";//nome fantasia
        $std->IE = "258591137";//obrigatório
        $std->IEST = "";
        $std->IM = "";//OPCIONAL
        $std->CNAE = "";//OPCIONAL
        $std->CRT = "1";//regime tributário?
        $std->CNPJ = "16604805000184"; //indicar apenas um CNPJ ou CPF
        $std->CPF = "";
        $nfe->tagemit($std);

        /** ENDEREÇO EMITENTE **/
        $std = new \stdClass();
        $std->xLgr = "Rua Carlos Otaviano Seara";
        $std->nro = "349";
        $std->xCpl = "";//nao é mais necessário
        $std->xBairro = "Nossa Senhora da Salete";
        $std->cMun = "4204608";
        $std->xMun = "Criciúma";
        $std->UF = "SC";
        $std->CEP = "88813410";
        $std->cPais = "1058";
        $std->xPais = "Brasil";
        $std->fone = "48999689698";
        $nfe->tagenderEmit($std);

        /** DESTINATÁRIO **/
        $std = new \stdClass();
        $std->xNome = "Alex Olivera Santos";
        $std->indIEDest = "2";//1=tem ie 2=nao tem ie @@@Luiz esta como 9
        $std->IE = "";
        $std->ISUF = "";//manaus
        $std->IM = "";//inscricao municipal obrigatorio
        $std->email = "alexsc2011@gmail.com";
        $std->CNPJ = ""; //indicar apenas um CNPJ ou CPF ou idEstrangeiro
        $std->CPF = "04587351911";
        $std->idEstrangeiro = null;///acho que é passaporte ou null
        $nfe->tagdest($std);

        /** ENDEREÇO DESTINATÁRIO **/
        $std = new \stdClass();
        $std->xLgr = "Rua Roberto Burlemax";
        $std->nro = "118";
        $std->xCpl = "";
        $std->xBairro = "Ceará";
        $std->cMun = "4204608";
        $std->xMun = "Criciúma";
        $std->UF = "SC";
        $std->CEP = "88815092";
        $std->cPais = "1058";
        $std->xPais = "Brasil";
        $std->fone = "62994430218";
        $nfe->tagenderDest($std);
























        //inicio foreach de produtos
        /** PRODUTOS **/
        $std = new \stdClass();
        $std->item = 1; //item da NFe //contador com count++ incrementando a cada passada, começar com 1
        $std->cProd = "4634";//
        $std->cEAN = "SEM GTIN";//codigo de barras caixa (obrigatório?)
        $std->xProd = "OLEO DE UNcaO 60 ML";//interrno sistema
        $std->NCM = "15122990";//
        $std->cBenef = ""; //incluido no layout 4.00
        $std->EXTIPI = "";
        $std->CFOP = "6102";//codigo da saida se é saida se é entrada pra outro estado etc
        $std->uCom = "UND";//
        $std->qCom = "2.0000";//quantidade???
        $std->vUnCom = "6.9900000000";//valor do produto????
        $std->cEANTrib = "SEM GTIN";//codigo de barras item separado
        $std->uTrib = "UND";//
        $std->qTrib = "1.0000";//quantidade
        $std->vUnTrib = "13.98";// anterior $std->vUnTrib = "13.9800000000"
        $aa = $std->qTrib;
        $bb = $std->vUnTrib;
        $teste = $aa * $bb;
        $std->vProd = $teste;//"13.98";//
        $std->vFrete = "47.66";//
        $std->vSeg = "";
        $std->vDesc = "";
        $std->vOutro = "";
        $std->indTot = 1;//integrar item ao resultado da nota (padrão)
        $nfe->tagprod($std);

        /** IMPOSTO **/
        $std = new \stdClass();
        $std->item = 1; //item da NFe mesmo id de cima do produto
        $std->vTotTrib = 4.00;//pegar do ibpt api total de imposto do produto?
        $nfe->tagimposto($std);

        /** ICMS **/
        $std = new \stdClass();
        $std->item = 1; //item da NFe
        $std->orig = 0;//0=nacional 1=importado
        $std->CST = "00";
        //faltou igualar luiz??? CSOSN <CSOSN>103</CSOSN>
        $std->modBC = 0;
        //return $std->vProd;// TESTE XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        $std->vBC = $teste;
        $std->pICMS = "18.00";//percentual de imposto
        $std->vICMS = $std->vBC * $std->pICMS / 100;//valor base icns
        $nfe->tagICMS($std);

        // aqui só vai montar se for interstadual
        $std = new \stdClass();
        $std->item = 1; //item da NFe seguir o mesmo do produto for
        $std->vBCUFDest = 13.98;//valor unitário precoBase ???
        $std->vBCFCPUFDest = 0.00;
        $std->pFCPUFDest = 0.0000;
        $std->pICMSUFDest = 18.0000;//18 é padrao pra todos???
        $std->pICMSInter = 7.00;//estava 12.00
        $std->pICMSInterPart = 100.0000;
        $std->vFCPUFDest = 0.00;
        $std->vICMSUFDest = 0.00;
        $std->vICMSUFRemet = 0.00;
        $nfe->tagICMSUFDest($std);
        // fim aqui só monta se for interstadual

        $std = new \stdClass();
        $std->item = 1;
        $std->cEnq = '999';
        $std->CST = '50';
        $std->vIPI = 0;
        $std->vBC = 0;
        $std->pIPI = 0;
        $nfe->tagIPI($std);

        /** PIS **/
        $std = new \stdClass();
        $std->item = 1; //item da NFe
        $std->CST = '01';//
        $std->vBC = $teste;// nota luiz esta 0.00 ???
        $std->pPIS = "0.0000";//
        $std->vPIS = $std->vBC * ($std->pPIS / 100);// ou shekinah "0.00" ??? ;u padrão $std->vProd
        $std->qBCProd = null;
        $std->vAliqProd = null;
        $nfe->tagPIS($std);

        $std = new \stdClass();
        $std->item = 1;
        $std->vCOFINS = 0;
        $std->vBC = 0;
        $std->pCOFINS = 0;

        $nfe->tagCOFINSST($std);

        /** COFINS **/
        $std = new \stdClass();
        $std->item = 1; //item da NFe
        $std->CST = '01';//estava 50
        $std->vBC = 0.00;// $teste; para o caso de apenas um item, senao somar tudo, valor pago pelo cliente Luiz esta 0.00 ???
        $std->pCOFINS = 0.0000;
        $std->vCOFINS = 0.00;//$std->vBC * ($std->pCOFINS / 100) estava assim
        $std->qBCProd = null;
        $std->vAliqProd = null;
        $nfe->tagCOFINS($std);

        /** IPI **/

        // fim monta o foreach de cada produto


        //inicio foreach de produtos
        /** PRODUTOS **/
        $std = new \stdClass();
        $std->item = 2; //item da NFe //contador com count++ incrementando a cada passada, começar com 1
        $std->cProd = "4634";//
        $std->cEAN = "SEM GTIN";//codigo de barras caixa (obrigatório?)
        $std->xProd = "OLEO DE UNcaO 60 ML";//interrno sistema
        $std->NCM = "15122990";//
        $std->cBenef = ""; //incluido no layout 4.00
        $std->EXTIPI = "";
        $std->CFOP = "6102";//codigo da saida se é saida se é entrada pra outro estado etc
        $std->uCom = "UND";//
        $std->qCom = "2.0000";//quantidade???
        $std->vUnCom = "6.9900000000";//valor do produto????
        $std->cEANTrib = "SEM GTIN";//codigo de barras item separado
        $std->uTrib = "UND";//
        $std->qTrib = "1.0000";//quantidade
        $std->vUnTrib = "13.98";// anterior $std->vUnTrib = "13.9800000000"
        $aa = $std->qTrib;
        $bb = $std->vUnTrib;
        $teste = $aa * $bb;
        $std->vProd = $teste;//"13.98";//
        $std->vFrete = "47.66";//
        $std->vSeg = "";
        $std->vDesc = "";
        $std->vOutro = "";
        $std->indTot = 2;//integrar item ao resultado da nota (padrão)
        $nfe->tagprod($std);

        /** IMPOSTO **/
        $std = new \stdClass();
        $std->item = 2; //item da NFe mesmo id de cima do produto
        $std->vTotTrib = 4.00;//pegar do ibpt api total de imposto do produto?
        $nfe->tagimposto($std);

        /** ICMS **/
        $std = new \stdClass();
        $std->item = 2; //item da NFe
        $std->orig = 0;//0=nacional 1=importado
        $std->CST = "00";
        //faltou igualar luiz??? CSOSN <CSOSN>103</CSOSN>
        $std->modBC = 0;
        //return $std->vProd;// TESTE XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        $std->vBC = $teste;
        $std->pICMS = "18.00";//percentual de imposto
        $std->vICMS = $std->vBC * $std->pICMS / 100;//valor base icns
        $nfe->tagICMS($std);

        // aqui só vai montar se for interstadual
        $std = new \stdClass();
        $std->item = 2; //item da NFe seguir o mesmo do produto for
        $std->vBCUFDest = 13.98;//valor unitário precoBase ???
        $std->vBCFCPUFDest = 0.00;
        $std->pFCPUFDest = 0.0000;
        $std->pICMSUFDest = 18.0000;//18 é padrao pra todos???
        $std->pICMSInter = 7.00;//estava 12.00
        $std->pICMSInterPart = 100.0000;
        $std->vFCPUFDest = 0.00;
        $std->vICMSUFDest = 0.00;
        $std->vICMSUFRemet = 0.00;
        $nfe->tagICMSUFDest($std);
        // fim aqui só monta se for interstadual

        $std = new \stdClass();
        $std->item = 2;
        $std->cEnq = '999';
        $std->CST = '50';
        $std->vIPI = 0;
        $std->vBC = 0;
        $std->pIPI = 0;
        $nfe->tagIPI($std);

        /** PIS **/
        $std = new \stdClass();
        $std->item = 2; //item da NFe
        $std->CST = '01';//
        $std->vBC = $teste;// nota luiz esta 0.00 ???
        $std->pPIS = "0.0000";//
        $std->vPIS = $std->vBC * ($std->pPIS / 100);// ou shekinah "0.00" ??? ;u padrão $std->vProd
        $std->qBCProd = null;
        $std->vAliqProd = null;
        $nfe->tagPIS($std);

        $std = new \stdClass();
        $std->item = 2;
        $std->vCOFINS = 0;
        $std->vBC = 0;
        $std->pCOFINS = 0;

        $nfe->tagCOFINSST($std);

        /** COFINS **/
        $std = new \stdClass();
        $std->item = 2; //item da NFe
        $std->CST = '01';//estava 50
        $std->vBC = 0.00;// $teste; para o caso de apenas um item, senao somar tudo, valor pago pelo cliente Luiz esta 0.00 ???
        $std->pCOFINS = 0.0000;
        $std->vCOFINS = 0.00;//$std->vBC * ($std->pCOFINS / 100) estava assim
        $std->qBCProd = null;
        $std->vAliqProd = null;
        $nfe->tagCOFINS($std);

        // fim monta o foreach de cada produto




















































        /** TOTAIS **/
        $std = new \stdClass();
        $std->vBC = $teste;
        $std->vICMS = '0.00';
        $std->vICMSDeson = '';
        $std->vFCP = ''; //incluso no layout 4.00
        $std->vBCST = '';
        $std->vST = '';
        $std->vFCPST = ''; //incluso no layout 4.00
        $std->vFCPSTRet = ''; //incluso no layout 4.00
        $std->vProd = $teste;
        $std->vFrete = '';
        $std->vSeg = '';
        $std->vDesc = '';
        $std->vII = '';
        $std->vIPI = '';
        $std->vIPIDevol = ''; //incluso no layout 4.00
        $std->vPIS = '';
        $std->vCOFINS = '';
        $std->vOutro = '';
        $std->vNF = '';
        $std->vTotTrib = '0.00';
        $nfe->tagICMSTot($std);

        /** TRANSPORTADORA **/
        $std = new \stdClass();
        $std->modFrete = 1;
        $nfe->tagtransp($std);

        /** VOLUME **/
        $std = new \stdClass();
        $std->item = '1'; //indicativo do numero do volume
        $std->qVol = '2';//QTD VOLUME
        $std->esp = 'caixa';
        $std->marca = 'OLX';
        $std->nVol = '11111';
        /*$std->pesoL = 10.50;
        $std->pesoB = 11.00;*/
        $nfe->tagvol($std);

        /** PAGAMENTO **/
        $std = new \stdClass();
        $std->vTroco = null; //incluso no layout 4.00, obrigatório informar para NFCe (65)
        $nfe->tagpag($std);

        /** DETALHE DO PAGAMENTO **/
        $std = new \stdClass();
        $std->tPag = '14';//forma de pgto
        $std->vPag = 200.00; //Obs: deve ser informado o valor pago pelo cliente
        $std->CNPJ = '12345678901234';
        $std->tBand = '01';
        $std->cAut = '3333333';
        $std->tpIntegra = 1; //incluso na NT 2015/002
        $std->indPag = '0'; //0= Pagamento à Vista 1= Pagamento à Prazo
        $nfe->tagdetPag($std);

        /** INFORMAÇÕES ADICIONAIS **/
        $std = new \stdClass();
        $std->infAdFisco = 'informacoes para o fisco';
        $std->infCpl = 'informacoes complementares';
        $nfe->taginfAdic($std);

        /** MONTA A NF-E **/
        $result = $nfe->montaNFe();

        /** **/
        //$result = $nfe->monta();

        /** **/
        //$result = $nfe->monta();

        /** **/
        //$xml = $nfe->getXML();

        /** **/
        //$chave = $nfe->getChave();

        //var_dump($result);
        if($nfe->montaNFe()){
            return $nfe->getXML();//funfando
        }else{
            echo 'Erro ao gerar NF-e';
            var_dump($nfe);
            return ;
        }/**/


    }
    public function sign($xml){
        
        try {
            $xmlAssinado = $this->tools->signNFe($xml); 
            return $xmlAssinado;
        } catch (\Exception $e) {
            exit('erro: '.$e->getMessage().' ::: '.$xml);
        }

        //return var_dump($this->tools->signNFe($xml));
    }

}

resultado xml gerado

<!--?xml version="1.0" encoding="UTF-8"?-->
<nfe xmlns="http://www.portalfiscal.inf.br/nfe"><infnfe id="NFe42200916604805000184550010000000021777050308" versao="4.00"><ide><cuf>42</cuf><cnf>77705030</cnf><natop>Venda de mercadoria adquirida ou recebida de terceiros</natop><mod>55</mod><serie>1</serie><nnf>2</nnf><dhemi>2020-09-10T17:51:52-03:00</dhemi><dhsaient>2020-09-10T17:51:52-03:00</dhsaient><tpnf>1</tpnf><iddest>1</iddest><cmunfg>4204608</cmunfg><tpimp>1</tpimp><tpemis>1</tpemis><cdv>8</cdv><tpamb>2</tpamb><finnfe>1</finnfe><indfinal>1</indfinal><indpres>1</indpres><procemi>0</procemi><verproc>1.0.0</verproc></ide><emit><cnpj>16604805000184</cnpj><xnome>NET BIBLIAS COMERCIO DE ARTIGOS EVANGELICOS LTDA-ME</xnome><xfant>NET BIBLIAS COMERCIO DE ARTIGOS EVANGELICOS LTDA-ME</xfant><enderemit><xlgr>Rua Carlos Otaviano Seara</xlgr><nro>349</nro><xbairro>Nossa Senhora da Salete</xbairro><cmun>4204608</cmun><xmun>Criciúma</xmun><uf>SC</uf><cep>88813410</cep><cpais>1058</cpais><xpais>Brasil</xpais><fone>48999689698</fone></enderemit><ie>258591137</ie><crt>1</crt></emit><dest><cpf>04587351911</cpf><xnome>NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xnome><enderdest><xlgr>Rua Roberto Burlemax</xlgr><nro>118</nro><xbairro>Ceará</xbairro><cmun>4204608</cmun><xmun>Criciúma</xmun><uf>SC</uf><cep>88815092</cep><cpais>1058</cpais><xpais>Brasil</xpais><fone>62994430218</fone></enderdest><indiedest>2</indiedest><email>alexsc2011@gmail.com</email></dest><det nitem="1"><det nitem="2"><det nitem="1"><prod><cprod>4634</cprod><cean>SEM GTIN</cean><xprod>OLEO DE UNcaO 60 ML</xprod><ncm>15122990</ncm><cfop>6102</cfop><ucom>UND</ucom><qcom>2.0000</qcom><vuncom>6.9900000000</vuncom><vprod>13.98</vprod><ceantrib>SEM GTIN</ceantrib><utrib>UND</utrib><qtrib>1.0000</qtrib><vuntrib>13.98</vuntrib><vfrete>47.66</vfrete><indtot>1</indtot></prod><imposto><vtottrib>4.00</vtottrib><icms><icms00><orig>0</orig><cst>00</cst><modbc>0</modbc><vbc>13.98</vbc><picms>18.0000</picms><vicms>2.52</vicms></icms00></icms><ipi><cenq>999</cenq><ipitrib><cst>50</cst><vbc>0.00</vbc><pipi>0.0000</pipi><vipi>0.00</vipi></ipitrib></ipi><pis><pisaliq><cst>01</cst><vbc>13.98</vbc><ppis>0.0000</ppis><vpis>0.00</vpis></pisaliq></pis><cofins><cofinsaliq><cst>01</cst><vbc>0.00</vbc><pcofins>0.0000</pcofins><vcofins>0.00</vcofins></cofinsaliq></cofins><cofinsst><vbc>0.00</vbc><pcofins>0.0000</pcofins><vcofins>0.00</vcofins></cofinsst><icmsufdest><vbcufdest>13.98</vbcufdest><vbcfcpufdest>0</vbcfcpufdest><pfcpufdest>0.0000</pfcpufdest><picmsufdest>18.0000</picmsufdest><picmsinter>7.00</picmsinter><picmsinterpart>100.0000</picmsinterpart><vfcpufdest>0</vfcpufdest><vicmsufdest>0</vicmsufdest><vicmsufremet>0</vicmsufremet></icmsufdest></imposto></det><det nitem="2"><prod><cprod>4634</cprod><cean>SEM GTIN</cean><xprod>OLEO DE UNcaO 60 ML</xprod><ncm>15122990</ncm><cfop>6102</cfop><ucom>UND</ucom><qcom>2.0000</qcom><vuncom>6.9900000000</vuncom><vprod>13.98</vprod><ceantrib>SEM GTIN</ceantrib><utrib>UND</utrib><qtrib>1.0000</qtrib><vuntrib>13.98</vuntrib><vfrete>47.66</vfrete><indtot>2</indtot></prod><imposto><vtottrib>4.00</vtottrib><icms><icms00><orig>0</orig><cst>00</cst><modbc>0</modbc><vbc>13.98</vbc><picms>18.0000</picms><vicms>2.52</vicms></icms00></icms><ipi><cenq>999</cenq><ipitrib><cst>50</cst><vbc>0.00</vbc><pipi>0.0000</pipi><vipi>0.00</vipi></ipitrib></ipi><pis><pisaliq><cst>01</cst><vbc>13.98</vbc><ppis>0.0000</ppis><vpis>0.00</vpis></pisaliq></pis><cofins><cofinsaliq><cst>01</cst><vbc>0.00</vbc><pcofins>0.0000</pcofins><vcofins>0.00</vcofins></cofinsaliq></cofins><cofinsst><vbc>0.00</vbc><pcofins>0.0000</pcofins><vcofins>0.00</vcofins></cofinsst><icmsufdest><vbcufdest>13.98</vbcufdest><vbcfcpufdest>0</vbcfcpufdest><pfcpufdest>0.0000</pfcpufdest><picmsufdest>18.0000</picmsufdest><picmsinter>7.00</picmsinter><picmsinterpart>100.0000</picmsinterpart><vfcpufdest>0</vfcpufdest><vicmsufdest>0</vicmsufdest><vicmsufremet>0</vicmsufremet></icmsufdest></imposto></det><total><icmstot><vbc>13.98</vbc><vicms>0.00</vicms><vicmsdeson>0.00</vicmsdeson><vfcp>0.00</vfcp><vbcst>0.00</vbcst><vst>0.00</vst><vfcpst>0.00</vfcpst><vfcpstret>0.00</vfcpstret><vprod>13.98</vprod><vfrete>95.32</vfrete><vseg>0.00</vseg><vdesc>0.00</vdesc><vii>0.00</vii><vipi>0.00</vipi><vipidevol>0.00</vipidevol><vpis>0.00</vpis><vcofins>0.00</vcofins><voutro>0.00</voutro><vnf>109.30</vnf></icmstot></total><transp><modfrete>1</modfrete><vol><qvol>2</qvol><esp>caixa</esp><marca>OLX</marca><nvol>11111</nvol></vol></transp><pag><detpag><indpag>0</indpag><tpag>14</tpag><vpag>200.00</vpag><card><tpintegra>1</tpintegra><cnpj>12345678901234</cnpj><tband>01</tband><caut>3333333</caut></card></detpag></pag><infadic><infadfisco>informacoes para o fisco</infadfisco><infcpl>informacoes complementares</infcpl></infadic></det></det></infnfe></nfe>

 

res.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.