[Aporte] Adjuntar archivo fichero al enviar email.

Cuestiones sobre cómo utilizar Dolibarr, ayudas sobre las funcionalidades o cualquier cuestión que no está relacionada con un error.

[Aporte] Adjuntar archivo fichero al enviar email.

Notapor aitorxs » Sab, 25/05/2019, 19:53

Buen día compañeros en esta oportunidad les vengo a compartir un cambio que hice a pedido de un cliente.
Tenía que adjuntar un segundo archivo al momento de enviar el documento(factura) pdf que se genera.
En peru se implementó la facturacion electronica, entonces se tiene que enviar un pdf con los detalles y un archivo xml con los detalles de la factura.

Imagen

en este caso tuve que cambiar el nombre por algunos datos solicitados.

Cabe indicar que el archivo xml es generado a partir de la informacion del documento con una api externa, la cual copia este archivo dentro de la carpeta "Documents/facture/F0001-0119"....lo mismo pasa con los archivos que se adjunta desde la pestaña documentos, tambien se guardan en la misma carpeta...ya sea para facturas, pedidos o presupuestos.

Entonces al momento del envio:

Imagen

Se adjuntaban los dos archivos.

El código que edite es el siguiente.

core/lib/files.lib.php

linea 2098 agregar la siguientes lineas
function dol_most_recent_file_1($dir,$regexfilter='',$excludefilter=array('(\.meta|_preview.*\.png)$','^\.'),$nohook=false,$mode='')
{
$tmparray=dol_dir_list($dir,'files',0,$regexfilter,$excludefilter,'date',SORT_DESC,$mode,$nohook);
return $tmparray[1];
}

----------------------------------------
core/tpl/card_presend.tpl.php

linea 52 agregar
$fileparams_1 = dol_most_recent_file_1($diroutput . '/' . $ref, preg_quote($ref, '/').'[^\-]+');

linea 57 agregar
$fileparams_1 = dol_most_recent_file_1($diroutput . '/' . get_exdir($object->id,2,0,0,$object,$object->element).$ref, preg_quote($ref,'/').'([^\-])+');

linea 60 agregar
$file_1 = $fileparams_1['fullname'];

linea 223 agregar
$formmail->param['fileinit_1'] = array($file_1);
------------------------------------------
core/class/html.formmail.class.php

linea 183 crear la funcion
function add_attached_files_1($path, $file_1='', $type='')
{
$listofpaths=array();
$listofnames=array();
$listofmimes=array();

if (empty($file_1)) $file=basename($path);
if (empty($type)) $type=dol_mimetype($file_1);

$keytoavoidconflict = empty($this->trackid)?'':'-'.$this->trackid; // this->trackid must be defined
if (! empty($_SESSION["listofpaths".$keytoavoidconflict])) $listofpaths=explode(';',$_SESSION["listofpaths".$keytoavoidconflict]);
if (! empty($_SESSION["listofnames".$keytoavoidconflict])) $listofnames=explode(';',$_SESSION["listofnames".$keytoavoidconflict]);
if (! empty($_SESSION["listofmimes".$keytoavoidconflict])) $listofmimes=explode(';',$_SESSION["listofmimes".$keytoavoidconflict]);
if (! in_array($file,$listofnames))
{
$listofpaths[]=$path;
$listofnames[]=$file_1;
$listofmimes[]=$type;
$_SESSION["listofpaths".$keytoavoidconflict]=join(';',$listofpaths);
$_SESSION["listofnames".$keytoavoidconflict]=join(';',$listofnames);
$_SESSION["listofmimes".$keytoavoidconflict]=join(';',$listofmimes);
}
}

en la linea 354 agregar

foreach($this->param['fileinit_1'] as $file_1 )
{
if (!empty($file_1)){
$this->add_attached_files_1($file_1, basename($file_1), dol_mimetype($file_1));
}
}
Con esos cambios pude hacer que se agregara automaticamente el segundo archivo al momento de enviar un email, ojalá y les sirva de algo. saludos!
Soluciones Informáticas
jamachuca28@gmail.com | http://www.machfree.com | Trujillo - Perú
*Si no respondo los mensajes....enviame un email ;)
Avatar de Usuario
aitorxs
C-3PO
 
Mensajes: 210
Registrado: Mar, 03/02/2015, 17:46

Volver a ¿Como?

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 4 invitados