Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

Poner Campos Requeridos

Cuestiones sobre cómo utilizar Dolibarr, ayudas sobre las funcionalidades o cualquier cuestión que no está relacionada con un error.
jdfallas
Novato
Mensajes: 1
Registrado: Sab, 03/08/2024, 16:44

Poner Campos Requeridos

Mensaje por jdfallas »

Buenas tardes a todos,

Queria saber si alguno sabe como poner algunos campos de los que trae Dolibarr por defecto como requeridos, por ejemplo, en Presupuestos que Condiciones de Pago o Forma de pago sean requeridos para crear el borrador.

He tratado de buscar pero no he encontrado nada claro, no se si modificando el codigo en El php o poniendo El Campo requerido en la bd. Sé que hay uno's plugins de paga que lo hacen, pero quisiera ver si lo puedo sin comprar nada.

De antemano Les agradezco la ayuda. Estoy usando la Ultima version 19.0.2.

jmbp1979
Novato
Mensajes: 1
Registrado: Lun, 10/01/2022, 14:55

Mensaje por jmbp1979 »

Buenas; tienes conocimientos de php? tienes acceso a los archivos de dolibarr?

mramirezhn
Novato
Mensajes: 2
Registrado: Jue, 12/09/2024, 02:25

Mensaje por mramirezhn »

Buenas tardes estimados! les deseo éxitos en sus funciones.

Soy nuevo en el uso de Dolibarr y estoy intentando implementar un sistema de facturación en la nube para mi empresa. Tras evaluar varias opciones, tanto gratuitas como de pago, me di cuenta de que ninguna cumplía con los estándares de facturación digital requeridos por las autoridades en mi país. Decidí entonces aprender a usar Dolibarr, una herramienta muy completa pero que requiere conocimientos de programación PHP. Aunque no tengo experiencia en programación, he dedicado varias semanas a modificar la plantilla de facturas predeterminada de Dolibarr. He logrado adaptar la plantilla a mis necesidades, pero tengo problemas con la parte de los totales. Necesito ayuda para resolver este problema:

Si se define el porcentaje de VAT o IVA el monto se mostrará en el subtotal, Total gravado 15% será igual al subtotal, impuesto 15% será el resultado de subtotal * 0,15 y total a pagar será igual a la suma de subtotal + impuesto 15% si VAT o IVA es igual a 0% el subtotal se reflejará en importe exonerado los campos: subtotal, importe exento, total gravado15%, total gravado18%, impuesto 15%, impuesto 18% serán igual a 0.00 total a pagar será igual a importe exonerado.

en la tabla de abajo de los totales es en donde necesito realizar esa operación. el porcentaje de IVA lo selección al hacer la factura con cada item le pongo ya sea 0% o 15% que es el porcentaje de IVA en mi pais y el 0% es para las grandes empresas que están exentas de impuestos.

Los campos que tengo son:

Sub Total :
Importe Exonerado :
Importe Exento :
Total Gravado 15% :
Total Gravado 18% :
Impuesto 15% :
Impuesto 18% :
Total a Pagar :

mramirezhn
Novato
Mensajes: 2
Registrado: Jue, 12/09/2024, 02:25

Mensaje por mramirezhn »

Hola estimados, he logrado resolver la duda que les había comentado. comparto el código de la solución, por si le sirve a alguien. la verdad que hacer funcionar dolibarr segun la necesidad de tu negocio es un reto extremo y te toca aprender sobre programación si o si.

///////////////////////////////////////////////////////////////////////////////////////// FUNCION DE AUTOSUMAS TABLA TOTALES

// Definir las tasas de VAT
$vat_rate_15 = 0.15;
$vat_rate_18 = 0.18;

// Inicialización de variables
$subtotal = $total_ht; // El subtotal es el mismo que $total_ht
$importe_exonerado = 0.00;
$total_gravado_15 = 0.00;
$total_gravado_18 = 0.00;
$impuesto_15 = 0.00;
$impuesto_18 = 0.00;
$total_a_pagar = 0.00;

// Procesar cada tasa de VAT
foreach ($this->tva_array as $tvakey => $tvaval) {
// Mostrar siempre, incluso si el VAT es 0%
$index++;
$pdf->SetTextColor(0, 0, 60);
$pdf->SetFillColor(224, 224, 224);
$pdf->SetXY($col1x + 18, $tab2_top + 24, $tab2_hl * $index);

// Si existe una nota especial para este VAT
$tvacompl = '';
if (preg_match('/\*/', $tvakey)) {
$tvakey = str_replace('*', '', $tvakey);
$tvacompl = " (" . $outputlangs->transnoentities("NonPercuRecuperable") . ")";
}

// Determinar cómo mostrar el VAT (por tasa o por código)
$totalvat = '';
if (getDolGlobalString('PDF_VAT_LABEL_IS_CODE_OR_RATE') == 'rateonly') {
$totalvat .= vatrate($tvaval['vatrate'], 1) . $tvacompl;
} elseif (getDolGlobalString('PDF_VAT_LABEL_IS_CODE_OR_RATE') == 'codeonly') {
$totalvat .= $tvaval['vatcode'] . $tvacompl;
}

// Calcular los montos dependiendo de la tasa de VAT
if ($tvaval['vatrate'] == 0) {
// Si el VAT es 0%, se refleja en "Importe Exonerado"
$importe_exonerado = $subtotal;
$total_gravado_15 = 0.00;
$total_gravado_18 = 0.00;
$impuesto_15 = 0.00;
$impuesto_18 = 0.00;
$total_a_pagar = $importe_exonerado; // Total a pagar igual a importe exonerado
} elseif ($tvaval['vatrate'] == 15) {
// Si el VAT es 15%, calcular el Total Gravado y el Impuesto
$total_gravado_15 = $subtotal;
$impuesto_15 = $subtotal * $vat_rate_15; // Impuesto 15%
$total_a_pagar = $subtotal + $impuesto_15; // Total a pagar con impuesto
} elseif ($tvaval['vatrate'] == 18) {
// Si el VAT es 18%, calcular el Total Gravado y el Impuesto
$total_gravado_18 = $subtotal;
$impuesto_18 = $subtotal * $vat_rate_18; // Impuesto 18%
$total_a_pagar = $subtotal + $impuesto_18; // Total a pagar con impuesto
}

// Mostrar los valores correspondientes según el VAT
if (!isset($tvaval['amount']) || $tvaval['amount'] == null || $tvaval['vatrate'] == 0) {
$amount_to_display = 'L. 0.00'; // Si el VAT es 0% o no está asignado
} else {
$amount_to_display = 'L. ' . price(price2num($tvaval['amount'], 'MT'), 0, $outputlangs); // Monto con VAT
}

// Mostrar el total del VAT y el monto en el PDF
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'R', 1);
$pdf->SetXY($col2x, $tab2_top + 24, $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, $amount_to_display, 0, 'R', 1);
}

// Imprimir los resultados totales del VAT

$pdf->SetFillColor(248, 248, 248); // Fondo gris para cada celda
$pdf->SetXY($col2x, $tab2_top + 9);
$pdf->MultiCell($largcol2, $tab2_hl, 'L. ' . price($importe_exonerado, 0, $outputlangs), 0, 'R', 1);

$pdf->SetFillColor(224, 224, 224);
$pdf->SetXY($col2x, $tab2_top + 14);
$pdf->MultiCell($largcol2, $tab2_hl, 'L. ' . price($total_gravado_15, 0, $outputlangs), 0, 'R', 1);

$pdf->SetFillColor(248, 248, 248);
$pdf->SetXY($col2x, $tab2_top + 19);
$pdf->MultiCell($largcol2, $tab2_hl, 'L. ' . price($total_gravado_18, 0, $outputlangs), 0, 'R', 1);

//$pdf->SetFillColor(224, 224, 224);
//$pdf->SetXY($col2x, $tab2_top + 24);
//$pdf->MultiCell($largcol2, $tab2_hl, 'L. ' . price($impuesto_15, 0, $outputlangs), 0, 'R', 1);

$pdf->SetFillColor(248, 248, 248);
$pdf->SetXY($col2x, $tab2_top + 29);
$pdf->MultiCell($largcol2, $tab2_hl, 'L. ' . price($impuesto_18, 0, $outputlangs), 0, 'R', 1);

$pdf->SetFillColor(224, 224, 224);
$pdf->SetXY($col2x, $tab2_top + 34);
$pdf->MultiCell($largcol2, $tab2_hl, 'L. ' . price($total_a_pagar, 0, $outputlangs), 0, 'R', 1);