edgar.dueñas
Enviado por edgar.dueñas el Mié, 11/05/2016 - 11:35

Adjuntando archivo pdf en la orden con hook_commerce_checkout_complete. Un ejemplo de como utilizar la hook_commerce_checkout_complete, cuando se completa la orden satisfactoriamente se genera un contrato en un documento pdf y se almacena en detalle de la orden, ademas al finalizar se le envia notificaciones a un grupo de emails almacenados en una tabla llamada 'commerce_departamento_mercadeo'.

/**
 * @param $order
 * Hook complete order
 */
function hook_commerce_checkout_complete($order) {
 
    //Generating and saving contract on order
    $result_pdf = generate_commerce_pdf($order);
    $order->data['contrato'] = $result_pdf;
    commerce_order_save($order);
 
    /**
     * Notifications for departament
     */
    //$email_notification = new email_notifications();
    $sql = db_select('commerce_departamento_mercadeo', 'mercadeo');
    $res = $sql->fields('mercadeo', array('id', 'email'))->execute();
 
    while ($row = $res->fetchAssoc()) {
        /**
         * Send notifications
         */
        //$email_notification->email_telemercadeo_complete_mail($row['email'], $order);
        email_telemercadeo_completed($row['email'], $order);
    }
}
 
 
/**
 * Generating PDF file
 * @param $order
 * @return array
 */
function generate_commerce_pdf($order) {
 
    global $base_url;
    /**
     * Load libreria DOMPDF
     */
    require_once(drupal_get_path('module', 'custom_commerce') . "/inc/dompdf/dompdf_config.inc.php");
	$baseImgSrc = drupal_get_path('module', 'custom_commerce' . '/inc/images');
 
	$fullname = $order->data['nombre'] . ' ' . $order->data['apellido'];
    $doctype = $order->data['cedula_o_pasaporte'];
    $numid = $order->data['num_cedula_o_pasaporte']; //Numero de cedula o pasaporte
    $email = $order->data['email'];
    $apto_casa = $order->data['casa_apartamento'];
    $barrio = $order->data['barrio'];
    $corr = $order->data['corregimientoe'];
    $distr = $order->data['distrito'];
    $provin = $order->data['provincia'];
    $calle = $order->data['calle'];
    $referenciaUbicacion = $order->data['referencias_de_ubicacion'];
    $tel = $order->data['telefono'];
    $cel = $order->data['celular'];
 
    $html = '
		<!DOCTYPE html>
		<html lang="es">
		<head>
			<meta charset="UTF-8" />
			<title>Contrato de servicios</title>
 
		</head>
		<body>
 
		<div id="page">
		<h1 class="mainTitle">Gracias por preferir!</h1>
		<p>Esta es una confirmación de su solicitud y la misma será procesada dentro de las próximas 48 horas hábiles. A continuación usted puede acceder a los términos de contrato de servicios:</p>
		<p>';
 
    //format date: Martes, Octubre 7, 2014 - 09:49
    $html  .= get_commerce_date();
 
    $html .= '
		<br />
		Solicitado por: <strong>' . $fullname . '</strong><br />
		</p>
		<h3>Detalle de Solicitud:</h3>
 
		<h4>Tu información personal</h4>
		Nombre: <span class="dynamicInput">' . $fullname . '</span><br />
		Tipo de Identificación: <span class="dynamicInput">' . $doctype . '</span><br />
		Cédula: <span class="dynamicInput">' . $numid . '</span><br />
 
		Provincia: <span class="dynamicInput">' . $provin . '</span><br />
		Distrito: <span class="dynamicInput">' . $distr . '</span><br />
		Corregimiento: <span class="dynamicInput">' . $corr . '</span><br />
		Barrio: <span class="dynamicInput">' . $barrio . '</span><br />
		Calle: <span class="dynamicInput">' . $calle . '</span><br />
		Casa / Apartamento: <span class="dynamicInput">' . $apto_casa . '</span><br />
		Referencia:  <span class="dynamicInput">'.$referenciaUbicacion.'</span><br /><br />
 
		<h4>¿Cómo te podemos contactar?</h4>
		E-mail: <span class="dynamicInput">' . $email . '</span><br />
		Teléfono: <span class="dynamicInput">' . $tel . '</span><br />
		Celular: <span class="dynamicInput">' . $cel . '</span><br /><br />
        </body>
        </html>';
 
 
    $systems = new systems();
	$dompdf = new DOMPDF();
	$dompdf->load_html($html);              // Loads the HTML string
	$dompdf->render();                      // Renders the HTML to PDF
	$pdf = $dompdf->output();
	$canvas = $dompdf->get_canvas();
 
    $numeroContrato = $order->order_number;
    $name_file = 'Contrato_' . date('dmY') . "_". $numeroContrato . '_' . $systems->clean_string_cedula( $numid ) . '_03.pdf';
    $temporary_directory = variable_get('file_temporary_path');
 
    file_put_contents(($temporary_directory .'/'. $name_file), $pdf);
 
    //Save the file on Drupal
    $filepathPDF = drupal_realpath($temporary_directory .'/'. $name_file);
 
    $filePDF = (object) array(
        'uid' => 1,
        'uri' => $filepathPDF,
        'filemime' => file_get_mimetype($filepathPDF),
        'status' => 1,
    );
 
    // We save the file to the root of the files directory.
    $fileP = file_move($filePDF, 'private://pdf');
 
    $pdf = (object) array(
        'fid' => $fileP->fid,
        'uid' => $fileP->uid,
        'filename' => drupal_basename($fileP->uri),
        'uri' => $fileP->uri,
        'filemime' => $fileP->filemime,
        'filesize' => $fileP->filesize,
        'status' => $fileP->status,
        'timestamp' => $fileP->timestamp,
        'rdf_mapping' => '',
        'display' => '1',
        'description' => '',
    );
    $resultPdf = array();
    $resultPdf['file_contrato'] =  $pdf;
 
    return $resultPdf;
}