Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

Desglosar bases en facturas

jorge.l.r
Novato
Mensajes: 5
Registrado: Mar, 18/06/2013, 18:53

Desglosar bases en facturas

Mensaje por jorge.l.r »

Hola muy buenas, necesito ayuda para poder desglosar bases imponibles en las facturas, crabe o en odt, me es indistinto.

El caso es que los tags en odt suman el total de los impuestos y recargos,
y en crabe, pese a ir desglosado por defecto, la base imponible esta sumada por lo que no sale bien.

El programa esta muy bien, sobre todo para el que trabaja con un único tipo de IVA (al 21%). Pero el que tiene que vender productos al 21, al 10 y al 4 % con recargo y sin recargo,
no parece que las soluciones sean fáciles, si alguien ha tenido el mismo problema y tiene alguna solución para que los desgloses figuren las facturas (teniendo en cuenta que la mayor parte de las personas de este mundo no somos programadores)

Muchas gracias por la ayuda.

Avatar de Usuario
aduart
Yoda
Mensajes: 1056
Registrado: Mié, 06/06/2012, 19:37

Mensaje por aduart »

Hola Jorge,

No se si soporta eso, del desglose. El sistema hace lo que tiene, y creo
lo hace bien. Si necesitas algo que no tiene, podes programarlo vos, o contratar
a alguien que lo haga, o comprar otro software.

Muchos saludos,
Eduardo.

Avatar de Usuario
marcosgdf
Jedi
Mensajes: 772
Registrado: Vie, 20/07/2012, 14:42
Ubicación: Valladolid, España

Mensaje por marcosgdf »

Hola Jorge:

Me parece una falta de respeto decir que el trabajo de los desarrolladores no es perfecto simplemente por el hecho de que no cumpla con las necesidades que tú buscas. Si quieres soluciones personalizadas, puedes pedir un presupuesto a un partner Dolibarr en la pestaña Contacta. Y si Dolibarr no suple tus necesidades, busca otro ERP que sí lo haga.

Un saludo.
Desarrollador con categoría Almirante de Dolibarr.
¿Quiere soporte personalizado? Contacte conmigo.

jorge.l.r
Novato
Mensajes: 5
Registrado: Mar, 18/06/2013, 18:53

Mensaje por jorge.l.r »

Buenos días marcosgdf,

Lamento el malentendido si lo ha habido, no pretendia en ningun momento menospreciar el trabajo de nadie, todo lo contrario, por eso recalco que el software es magnífico. Simplemente era una sugerencia, ya que, como tu dices me he encontrado con ese problema a la hora de implantarlo en una determinada solución. No obstante si mis palabra no han sido adecuadas me retracto de ellas.

En cuanto al soporte técnico, ya barajé esa posibilidad contactando con el servicio, el cual me atendió bien y rápido. El problema es que las soluciones especializadas a estos niveles son proporcionalmente muy caras para el resultado a obtener, entiendo que el trabajo es costoso, pero al no ser escalable, no es rentable implantarla en mi caso, poniendose por tanto al nivel de soluciones comerciales.

Sin mas, un cordial saludo.

Avatar de Usuario
marcosgdf
Jedi
Mensajes: 772
Registrado: Vie, 20/07/2012, 14:42
Ubicación: Valladolid, España

Mensaje por marcosgdf »

Hola de nuevo jorge:

Quizá me he tomado tu comentario como algo personal, pero entiende que los desarrolladores de Dolibarr realizan contribuciones sin recibir nada a cambio y permiten que su software lo utilicen empresas con ánimo de lucro sin pagar nada por ello. El problema no es ese, el problema es que a lo mejor hay empresas que se creen que pueden exigir cosas sin ni siquiera donar o aportar nada al proyecto.

Por eso me molestó tu comentario.

De todas formas, quiero que sepas que yo también he notado esa falta de funcionalidad en Dolibarr y seguramente desarrolle en los próximos días una plantilla personalizada que pondré a la venta en DoliStore.

Te animo a que informes de cualquier problema o sugerencia que encuentres en Dolibarr para que hagamos de él un software mejor.

Un saludo.
Desarrollador con categoría Almirante de Dolibarr.
¿Quiere soporte personalizado? Contacte conmigo.

jorge.l.r
Novato
Mensajes: 5
Registrado: Mar, 18/06/2013, 18:53

Mensaje por jorge.l.r »

Dolibarr es un muy buen software, y sobre todo tiene mucho futuro, efectivamente hay que evolucionarlo y no es facil cuando realizas un trabajo y no hay remuneración. En eso me solidarizo contigo, y esta claro que si a largo plazo le sacas un rendimiento, es una obligación moral el contribuir aunque sea un poco con aquellos que realizan el trabajo.

Como todo, si una PYME implanta Dolibarr como un recurso propio, también se entiende que una de las razones por las que implanta esa solución es el ahorro en costes.

En mi caso, apenas estoy empezando a "trastear" la aplicación, por eso notifique este, en mi caso, "inconveniente", ya que al no desglosar las bases, no cumplo con la normativa de una forma correcta, no sabria decirte si simplemente vale con el desglose en productos, pero bueno.

Cuando me puse a ver la estructura de la base de datos me di cuenta que si se realiza el desglose, pero en otra tabla, por eso pregunto, ¿No sería mas adecuado que el desglose de Bases e Ivas se realizara en la propia tabla llx_facture?, se que si miras la tabla, creo que era llx_facturedet, si esta el desglose asociado a rowid, pero no supe como trasladar esa informacion a un tag en un factura odt correctamente, mucho menos a una pdf.

Muchas gracias por la respuesta.

fernalu
Novato
Mensajes: 12
Registrado: Mié, 08/06/2016, 10:25

Mensaje por fernalu »

Yo creo que es una buena contribución, no entiendo la polemica

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

Mensaje por cisaweb »

Hola,

¿Se sabe algo más de éste tema? Yo también necesito desglosar en las facturas las bases imponibles según el tipo de IVA, pero no termino de lograrlo.

Por si a alguien le sirve como ayuda para encontrar una solución os cuento lo que, trasteando un poco, he conseguido entender y hacer:

- Para modificar el PDF de la factura, tengo que modificar el archico pdf_crabe.modules.php que está en htdocs/core/modules/facture/doc

- Las bases imponibles en francés se llaman HT, por lo que para modificar esa parte, dentro del archivo pdf_crabe.modules.php, tengo que modificar el código que hay justo después del comentario:

// Total HT

- Concretamente creo que hay que modificar ésta línea que es la que muestra la base imponible total quitando los posibles descuentos (remise) que se hayan hecho sobre el precio del producto:

$pdf->MultiCell($largcol2, $tab2_hl, price($sign * ($object->total_ht + (! empty($object->remise)?$object->remise:0)), 0, $outputlangs), 0, 'R', 1);

- En la factura en pdf, justo debajo de Base imponible, he conseguido añadir dos líneas en las que pone "Base imponible 10%" y "Base imponible 21%". Para hacerlo, justo después del código anterior, he copiado y pegado esto (que no es más que un copia y pega ligeramente modificado del código que aparece en ese mismo archivo un poco más abajo tras el comentario // VAT):

// Experimento Bases imponibles desglosadas
foreach($this->tva as $tvakey => $totalvat)
{
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 * ($object->total_ht + (! empty($object->remise)?$object->remise:0)), 0, $outputlangs), 0, 'R', 1);
}
}


Con ese código consigo que aparezca esto en la factura:

Base imponible 57,20
Base imponible 10% 57,20
Base imponible 21% 57,20

Pero como he dicho antes, sigo necesitando modificar la última línea para que los valores de las bases al 10 y al 21 se sumen bien.

- En el mismo archivo más arriba, veo que hay un código comentado como // Total HT line que creo que podría ayudar, pero no soy capaz de mezclar las dos partes para que me de el resultado deseado.

Si alguien sabe PHP, es capaz de hacerlo y comparte aquí la solución le estaré eternamente agradecida!!! Y si ese alguien no quiere hacerlo gratis, también acepto precios. :roll:

Mientras tanto seguiré investigando a ver si aprendo algo más de PHP y consigo que salga...

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

Mensaje por cisaweb »

¡Conseguido! Utilizando como base el modelo crabe en la versión Dolibarr 4.0.4

Éste es el código:

Código: Seleccionar todo


		// Experimento Bases imponibles desglosadas - CISAWEB	
		
			$totalHT_IVA4 = 0;
			$totalHT_IVA10 = 0;
			$totalHT_IVA21 = 0;
			//Creada una variable por cada tipo de IVA. Lo ideal sería que los detecte automáticamente. REVISAR para mejorar el código - CISAWEB.

			$nblignes = count($object->lines);
			// Loop on each lines
			for ($i = 0; $i < $nblignes; $i++)
			{
				$vat_rate = pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails);
				$total_excl_tax = pdf_getlinetotalexcltax($object, $i, $outputlangs, $hidedetails);
				$total_excl_taxNumber = floatval(str_replace(',', '.', str_replace('.', '', $total_excl_tax))); // Convierte la variable $total_excl_tax al tipo float sustituyendo las comas por puntos, para poder hacer operaciones con ella - CISAWEB.

				if ($vat_rate == "4%")
				{
					$totalHT_IVA4 += $total_excl_taxNumber;
				}

				if ($vat_rate == "10%")
				{
					$totalHT_IVA10 += $total_excl_taxNumber;
				}

				else if ($vat_rate == "21%")
				{
					$totalHT_IVA21 += $total_excl_taxNumber;
				}
			}

			foreach($this->tva as $tvakey => $totalvat)
			{
				if ($tvakey != 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").' '; // El texto "Base imponible" en la factura - CISAWEB
					$totalvat.=vatrate($tvakey,1).$tvacompl; // Seguido del tipo de IVA al que se refiere esa base imponible - CISAWEB
					$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1);

					$totalHT_portivoIVA = 0; // Variable creada por CISAWEB.

					if ($tvakey == 4)
					{
						$totalHT_portivoIVA = $totalHT_IVA4;	
					}

					else if ($tvakey == 10) 
					{
						$totalHT_portivoIVA = $totalHT_IVA10;
					}

					else if ($tvakey == 21)
					{
						$totalHT_portivoIVA = $totalHT_IVA21;	
					}

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

		// FIN Experimento Bases imponibles desglosadas - CISAWEB.

El lugar exacto donde ponerlo es éste:

Código: Seleccionar todo

                ......

		// 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);




                [[Pega aquí el código de arriba]]




                // Show VAT by rates and total
		$pdf->SetFillColor(248,248,248);

		.....

Espero que os funcione a todos los que tenéis el mismo problema :)