domingo, 27 de diciembre de 2015

Total de ISV, VAT no sale igual en Dolibarr

Problema:

El dolibarr no muestra el total del impuesto sobre venta (ISV / VAT) de forma correcta, quita monedas en el impuesto.

Explicación:

Lo que sucede es que el sistema de dolibarr hace el cálculo con el precio unitario del producto. Y durante el proceso de cálculo de los totales va quitando los dígitos cuando son mayores a dos, es decir, solo toma dos dígitos después del punto.
El error que se cometió, es que esos dígitos no deberían ser quitados durante el proceso, sino hasta haber finalizado el proceso. Me explico, lo que debieron hacer es que una vez que ya hayan sacado los totales, quitarle los dígitos que están de más… y no quitarlos antes de sacar los totales. 

Solución: 

Buscar la librería en htdocs/core/lib/price.lib.php

Una vez ahí de arriba hacia abajo quitar todos 
price2num(…,'MU')
price2num(…,'MT')

Pero deja la formula que están dentro del “price2num”… Hasta llegar a:
$pu = price2num($pu / (1 + ($txtva / 100)),'MU');
    }
$apply_tax = false;
    switch($localtax1_type) {
      case '1':     // localtax on product or service
        $apply_tax = true;
        break;
      case '3':     // localtax on product
        if ($type == 0) $apply_tax = true;
        break;
      case '5':     // localtax on service
        if ($type == 1) $apply_tax = true;
        break;
    }

Ejemplo:

Si tienes:
 $result[5] = price2num(($pu + $localtaxes[2]), 'MU');

Te debe quedar:
$result[5] = ($pu + $localtaxes[2]);

viernes, 4 de diciembre de 2015

Poner condiciones al agregar nueva linea en factura DOLIBARR

Deberás dirigirte al siguiente php, por ahí pasan todos los valores antes que la nueva linea sea agregada, asi que es el punto perfecto para poner condiciones.

htdocs/comta/facture/class/facture.class.php

Un ejemplo sería:
global $mysoc, $conf, $langs, $db, $sql;
$sql = "select A.tva_assuj from llx_societe AS A INNER JOIN llx_".$this->table_element. " AS B ON B.fk_soc=A.rowid WHERE B.rowid=".$this->id;
         
$rsql = $db->query($sql);
                     
if ($rsql) {              
      $obj = $db->fetch_object($rsql);            
      if($obj->tva_assuj == 1){                  
      } else {
                  $txtva = 0;              
      }                
}

Esta condición hace que si el cliente no aplica al ISV, entoces siempre se le pondrá cero de impuesto sobre venta en todos los productos que compre, es decir le quitará el impuesto sobre venta.

miércoles, 2 de diciembre de 2015

Agregar Nueva Pestaña o Tab en Dolibarr

Dentro de tu carpeta principal donde estará el modulo y en el php del modulo, es decir:
C:\wamp\www\doli362\htdocs\CarpetaDeModulo\core\modules\modNombreDeModulo.php


Deberás incluir el siguiente código, con las modificaciones que considerés necesarias para tu modulo, este solo es un formato:
$this->tabs = array('objecttype:+tabname:TitleOfTab:@mymodule:conditiontohavetab:urlfortab?id=__ID__'
);

Te pongo un ejemplo:
$this->tabs = array('supplier_invoice:+tabname:Nueva Pestaña 1:langfile@modNombreDeModulo:$user->rights->CarpetaDeModulo->contenidoDeModulo->read:/CarpetaDeModulo/contenidoDeModulo.php?id=__ID__'); 


Este tab será agregado dentro de Financiera, dentro de facturas a proveedores, pronto pondré un "diccionario" para que sepas donde será agregado cada tab según el objecttype.

No olvides que después de agregar el tab dentro del código, debes desactivar y volver a activar el modulo para que los cambios sean aplicados.

Iniciando con Blender

Acercar la imagen: girando la rueda en el centro del mouse. Girar la imagen: manteniendo presionada la rueda en el centro del mouse y movi...