Skip to content

Commit

Permalink
Merge pull request #586 from likesistemas/feature/danfeSimples
Browse files Browse the repository at this point in the history
✨ Melhorias danfe simples
  • Loading branch information
robmachado authored Nov 28, 2023
2 parents ab0557e + c9d2c4f commit 3793c0f
Showing 1 changed file with 52 additions and 43 deletions.
95 changes: 52 additions & 43 deletions src/NFe/DanfeSimples.php
Original file line number Diff line number Diff line change
Expand Up @@ -263,42 +263,44 @@ protected function monta($logo = null)
$pesoB = 0.000;
$totalVolumes = 0;

// Normalizar o array de volumes quando tem apenas 1 volumes
if (!isset($this->nfeArray['NFe']['infNFe']['transp']['vol'][0])) {
$this->nfeArray['NFe']['infNFe']['transp']['vol'] = [
$this->nfeArray['NFe']['infNFe']['transp']['vol']
];
}

foreach ($this->nfeArray['NFe']['infNFe']['transp']['vol'] as $vol) {
$espVolume = isset($vol['esp']) ? $vol['esp'] : 'VOLUME';
//Caso não esteja especificado no xml, irá ser mostrado no danfe a palavra VOLUME

if (!isset($volumes[$espVolume])) {
$volumes[$espVolume] = 0;
if( isset($this->nfeArray['NFe']['infNFe']['transp']) && isset($this->nfeArray['NFe']['infNFe']['transp']['vol']) ) {
// Normalizar o array de volumes quando tem apenas 1 volumes
if (!isset($this->nfeArray['NFe']['infNFe']['transp']['vol'][0])) {
$this->nfeArray['NFe']['infNFe']['transp']['vol'] = [
$this->nfeArray['NFe']['infNFe']['transp']['vol']
];
}

// Caso a quantidade de volumes não esteja presente no XML, soma-se zero
$volumes[$espVolume] += @$vol['qVol'];
// Caso a quantidade de volumes não esteja presente no XML, soma-se zero
$totalVolumes += @$vol['qVol'] ?: 0;
// Caso o peso bruto não esteja presente no XML, soma-se zero
$pesoB += @$vol['pesoB'] ?: 0;
// Caso o peso liquido não esteja presente no XML, soma-se zero
$pesoL += @$vol['pesoL'] ?: 0;
}
foreach ($this->nfeArray['NFe']['infNFe']['transp']['vol'] as $vol) {
$espVolume = isset($vol['esp']) ? $vol['esp'] : 'VOLUME';
//Caso não esteja especificado no xml, irá ser mostrado no danfe a palavra VOLUME

if (!isset($volumes[$espVolume])) {
$volumes[$espVolume] = 0;
}

// Caso a quantidade de volumes não esteja presente no XML, soma-se zero
$volumes[$espVolume] += @$vol['qVol'];
// Caso a quantidade de volumes não esteja presente no XML, soma-se zero
$totalVolumes += @$vol['qVol'] ?: 0;
// Caso o peso bruto não esteja presente no XML, soma-se zero
$pesoB += @$vol['pesoB'] ?: 0;
// Caso o peso liquido não esteja presente no XML, soma-se zero
$pesoL += @$vol['pesoL'] ?: 0;
}

// LINHA 1
$this->pdf->setFont('Arial', 'B', $pequeno ? 10 : 12);
$this->pdf->cell(
($this->maxW - ($this->margesq * 2)),
$pequeno ? 5 : 6,
"DANFE SIMPLIFICADO - ETIQUETA",
1,
1,
'C',
1
);
// LINHA 1
$this->pdf->setFont('Arial', 'B', $pequeno ? 10 : 12);
$this->pdf->cell(
($this->maxW - ($this->margesq * 2)),
$pequeno ? 5 : 6,
"DANFE SIMPLIFICADO - ETIQUETA",
1,
1,
'C',
1
);
}

// LINHA 2
$dataEmissao = date('d/m/Y', strtotime("{$this->nfeArray['NFe']['infNFe']['ide']['dhEmi']}"));
Expand Down Expand Up @@ -379,7 +381,7 @@ protected function monta($logo = null)
$this->pdf->multiCell(
($c1 * 4),
$pequeno ? 4 : 5,
"{$this->nfeArray['NFe']['infNFe']['emit']['xNome']}",
$this->convertToIso($this->nfeArray['NFe']['infNFe']['emit']['xNome']),
1,
'C',
false
Expand All @@ -390,10 +392,11 @@ protected function monta($logo = null)
? $this->nfeArray['NFe']['infNFe']['emit']['CNPJ']
:$this->nfeArray['NFe']['infNFe']['emit']['CPF']);
$this->pdf->cell(($c1 * 2), $pequeno ? 4 : 5, "CNPJ/CPF {$cpfCnpj}", 1, 0, 'C', 1);

$this->pdf->cell(
($c1 * 2),
$pequeno ? 4 : 5,
@"RG/IE {$this->nfeArray['NFe']['infNFe']['emit']['IE']}",
isset($this->nfeArray['NFe']['infNFe']['emit']['IE']) ? "RG/IE {$this->nfeArray['NFe']['infNFe']['emit']['IE']}" : "RG/IE: Nenhum",
1,
1,
'C',
Expand All @@ -406,7 +409,7 @@ protected function monta($logo = null)

// LINHA 9
$this->pdf->setFont('Arial', '', $pequeno ? 9 : 10);
$this->pdf->cell(($c1 * 4), $pequeno ? 4 : 5, "{$enderecoEmit}", 1, 1, 'C', 1);
$this->pdf->cell(($c1 * 4), $pequeno ? 4 : 5, $this->convertToIso($enderecoEmit), 1, 1, 'C', 1);

// LINHA 10
$this->pdf->setFont('Arial', 'B', $pequeno ? 10 : 12);
Expand All @@ -417,7 +420,7 @@ protected function monta($logo = null)
$this->pdf->multiCell(
($c1 * 4),
$pequeno ? 4 : 5,
"{$this->nfeArray['NFe']['infNFe']['dest']['xNome']}",
$this->convertToIso("{$this->nfeArray['NFe']['infNFe']['dest']['xNome']}"),
1,
'C',
false
Expand All @@ -428,10 +431,11 @@ protected function monta($logo = null)
? $this->nfeArray['NFe']['infNFe']['dest']['CNPJ']
:$this->nfeArray['NFe']['infNFe']['dest']['CPF']);
$this->pdf->cell(($c1 * 2), $pequeno ? 4 : 5, "CNPJ/CPF {$cpfCnpj}", 1, 0, 'C', 1);

$this->pdf->cell(
($c1 * 2),
$pequeno ? 4 : 5,
@"RG/IE {$this->nfeArray['NFe']['infNFe']['dest']['IE']}",
isset($this->nfeArray['NFe']['infNFe']['dest']['IE']) ? "RG/IE {$this->nfeArray['NFe']['infNFe']['dest']['IE']}" : "RG/IE: Nenhum",
1,
1,
'C',
Expand All @@ -449,7 +453,7 @@ protected function monta($logo = null)
}
$enderecoLinha2 .= "{$this->nfeArray['NFe']['infNFe']['entrega']['xMun']}"
. " / {$this->nfeArray['NFe']['infNFe']['entrega']['UF']}"
. " - CEP {$this->nfeArray['NFe']['infNFe']['entrega']['CEP']}";
. (isset($this->nfeArray['NFe']['infNFe']['entrega']['CEP']) ? " - CEP {$this->nfeArray['NFe']['infNFe']['entrega']['CEP']}" : null);
} else {
$enderecoLinha1 = "{$this->nfeArray['NFe']['infNFe']['dest']['enderDest']['xLgr']}";
if (!empty($this->nfeArray['NFe']['infNFe']['dest']['enderDest']['nro'])) {
Expand All @@ -461,14 +465,14 @@ protected function monta($logo = null)
}
$enderecoLinha2 .= "{$this->nfeArray['NFe']['infNFe']['dest']['enderDest']['xMun']}"
. " / {$this->nfeArray['NFe']['infNFe']['dest']['enderDest']['UF']}"
. " - CEP {$this->nfeArray['NFe']['infNFe']['dest']['enderDest']['CEP']}";
. (isset($this->nfeArray['NFe']['infNFe']['entrega']['CEP']) ? " - CEP {$this->nfeArray['NFe']['infNFe']['dest']['enderDest']['CEP']}" : null);
}

$this->pdf->setFont('Arial', '', $pequeno ? 9 : 10);
$this->pdf->cell(($c1 * 4), $pequeno ? 4 : 5, "{$enderecoLinha1}", 1, 1, 'C', 1);
$this->pdf->cell(($c1 * 4), $pequeno ? 4 : 5, $this->convertToIso($enderecoLinha1), 1, 1, 'C', 1);

$this->pdf->setFont('Arial', '', $pequeno ? 9 : 10);
$this->pdf->cell(($c1 * 4), $pequeno ? 4 : 5, "{$enderecoLinha2}", 1, 1, 'C', 1);
$this->pdf->cell(($c1 * 4), $pequeno ? 4 : 5, $this->convertToIso($enderecoLinha2), 1, 1, 'C', 1);

if ($this->nfeArray['NFe']['infNFe']['transp']['modFrete'] != 9
&& isset($this->nfeArray['NFe']['infNFe']['transp']['transporta'])
Expand All @@ -479,7 +483,7 @@ protected function monta($logo = null)
$this->pdf->cell(
($c1 * 4),
$pequeno ? 5 : 6,
"{$this->nfeArray['NFe']['infNFe']['transp']['transporta']['xNome']}",
$this->convertToIso($this->nfeArray['NFe']['infNFe']['transp']['transporta']['xNome']),
1,
1,
'C',
Expand Down Expand Up @@ -535,4 +539,9 @@ protected function monta($logo = null)
);
}
}

private function convertToIso($text) {
return mb_convert_encoding($text, 'ISO-8859-1', ['UTF-8', 'windows-1252']);
}

}

0 comments on commit 3793c0f

Please sign in to comment.