Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

Desglose de Base imponible

Bonhd
Novato
Mensajes: 31
Registrado: Jue, 23/07/2015, 09:44

Desglose de Base imponible

Mensaje por Bonhd »

Hola a todos.
Estoy intentando que me aparezcan las distintas bases imponibles en una factura (Dolibarr ya desglosa los distintos IVAs).
Siguiendo un código que apuntó Cisaweb (muchisimas gracias por cierto) en el post:
https://www.dolibarr.es/foro/viewtopic. ... ble#p10269
y haciendole unos cambios he conseguido que me dé las bases imponibles (pondré el código más abajo) pero me sale con descuadres de céntimos porque no he sido capaz de averiguar el cálculo de cada línea y que sume cada línea correspondiente a cada tipo de IVA.
Así que he hecho una chapuza.
He visto que "$tvaval" es el valor resultante de cada IVA.
Y he visto que "$tvakey" es el valor de IVA.
Así que le he echado valor y he dividido uno entre otro y multiplicado por 100 ( $tvaval / $tvakey*100) y ha sonado la flauta (pero no del todo bien).
Como $tvaval y $tvakey vienen configurados con dos decimales, la depreciación del redondeo hace que al final haya errores de céntimos.

A ver si alguien puede echarme una "manita".
Gracias.




Aquí tenéis el código que pertenece al archivo pdf_crabe.modules.php
Éste trocito de código está despues de " // Total HT " a partir de la línea 1033

// Total HT
/*
* $pdf->SetFillColor(255,255,255);
$pdf->SetXY($col1x, $tab2_top + 0);
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1);

$total_ht = ($conf->multicurrency->enabled && $object->mylticurrency_tx != 1 ? $object->multicurrency_total_ht : $object->total_ht);
$pdf->SetXY($col2x, $tab2_top + 0);
$pdf->MultiCell($largcol2, $tab2_hl, price($sign * ($total_ht + (! empty($object->remise)?$object->remise:0)), 0, $outputlangs), 0, 'R', 1);
*/

// Experimento Bases imponibles desglosadas
foreach($this->tva as $tvakey => $tvaval)
{
if ($tvakey != 0) // On affiche pas taux 0
{
$this->atleastoneratenotnull++;

$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);

$tvacompl='';
if (preg_match('/\*/',$tvakey))
{
$tvakey=str_replace('*','',$tvakey);
$tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")";
}
$totalvat =$outputlangs->transnoentities("TotalHT").' ';
$totalvat.=vatrate($tvakey,1).$tvacompl;
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1);

$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($sign * ($tvaval/$tvakey*100 + (! empty($object->remise)?$object->remise:0)), 0, $outputlangs), 0, 'R', 1);
}
}

Avatar de Usuario
cisaweb
Novato
Mensajes: 3
Registrado: Jue, 15/09/2016, 14:19
Ubicación: Madrid

Mensaje por cisaweb »

Hola Bonhd,

Perdona, pero no había tenido mucho tiempo últimamente. Acabo de poner el código con la solución en el post original. Probablemente exista una forma más elegante de hacerlo, pero al menos funciona.

Pruébalo y me cuentas!

Un saludo!