X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContribute%2FForm%2FTask%2FInvoice.php;h=88c68fa11a8a536451a04f397de46f2ae5a43b9f;hb=1844808f5fffae828954677d7417112c3d5dd0a7;hp=999a5724523637436b6ea4119df998ce5d38ec48;hpb=24c974a6442638dcc0f57496515d4837f7d872d2;p=civicrm-core.git diff --git a/CRM/Contribute/Form/Task/Invoice.php b/CRM/Contribute/Form/Task/Invoice.php index 999a572452..88c68fa11a 100644 --- a/CRM/Contribute/Form/Task/Invoice.php +++ b/CRM/Contribute/Form/Task/Invoice.php @@ -66,8 +66,6 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { /** * Build all the data structures needed to build the form. - * - * @return void */ public function preProcess() { $id = CRM_Utils_Request::retrieve('id', 'Positive', $this, FALSE); @@ -138,9 +136,6 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { /** * Build the form object. - * - * - * @return void */ public function buildQuickForm() { $session = CRM_Core_Session::singleton(); @@ -222,9 +217,6 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { /** * Process the form after the input has been submitted and validated. - * - * - * @return void */ public function postProcess() { $params = $this->controller->exportValues($this->_name); @@ -232,8 +224,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { } /** - * Process the PDf and email with activity and attachment. - * on click of Print Invoices + * Process the PDf and email with activity and attachment on click of Print Invoices. * * @param array $contribIDs * Contribution Id. @@ -253,6 +244,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { // gives the status id when contribution status is 'Refunded' $contributionStatusID = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); $refundedStatusId = CRM_Utils_Array::key('Refunded', $contributionStatusID); + $cancelledStatusId = CRM_Utils_Array::key('Cancelled', $contributionStatusID); // getting data from admin page $prefixValue = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME, 'contribution_invoice_settings'); @@ -309,8 +301,13 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { $stateProvinceAbbreviation = ''; } - if ($contribution->contribution_status_id == $refundedStatusId) { - $creditNoteId = CRM_Utils_Array::value('credit_notes_prefix', $prefixValue) . "" . $contribution->id; + if ($contribution->contribution_status_id == $refundedStatusId || $contribution->contribution_status_id == $cancelledStatusId) { + if (is_null($contribution->creditnote_id)) { + $creditNoteId = CRM_Contribute_BAO_Contribution::createCreditNoteId($contribution->id); + } + else { + $creditNoteId = $contribution->creditnote_id; + } } $invoiceId = CRM_Utils_Array::value('invoice_prefix', $prefixValue) . "" . $contribution->id; @@ -430,6 +427,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { 'lineItem' => $lineItem, 'dataArray' => $dataArray, 'refundedStatusId' => $refundedStatusId, + 'cancelledStatusId' => $cancelledStatusId, 'contribution_status_id' => $contribution->contribution_status_id, 'subTotal' => $subTotal, 'street_address' => CRM_Utils_Array::value('street_address', CRM_Utils_Array::value($contribution->contact_id, $billingAddress)), @@ -456,12 +454,13 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { $tplParams['creditnote_id'] = $creditNoteId; } + $pdfFileName = "{$invoiceId}.pdf"; $sendTemplateParams = array( 'groupName' => 'msg_tpl_workflow_contribution', 'valueName' => 'contribution_invoice_receipt', 'contactId' => $contribution->contact_id, 'tplParams' => $tplParams, - 'PDFFilename' => 'Invoice.pdf', + 'PDFFilename' => $pdfFileName, ); $session = CRM_Core_Session::singleton(); $contactID = $session->get('userID'); @@ -519,7 +518,8 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { list($sent, $subject, $message, $html) = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams); // functions call for adding activity with attachment - $fileName = self::putFile($html); + $pdfFileName = "{$invoiceId}.pdf"; + $fileName = self::putFile($html, $pdfFileName); self::addActivities($subject, $contribution->contact_id, $fileName, $params); } elseif ($contribution->_component == 'event') { @@ -533,14 +533,12 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { list($sent, $subject, $message, $html) = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams); // functions call for adding activity with attachment - $fileName = self::putFile($html); + $pdfFileName = "{$invoiceId}.pdf"; + $fileName = self::putFile($html, $pdfFileName); self::addActivities($subject, $contribution->contact_id, $fileName, $params); } CRM_Core_DAO::setFieldValue('CRM_Contribute_DAO_Contribution', $contribution->id, 'invoice_id', $invoiceId); - if ($contribution->contribution_status_id == $refundedStatusId) { - CRM_Core_DAO::setFieldValue('CRM_Contribute_DAO_Contribution', $contribution->id, 'creditnote_id', $creditNoteId); - } $invoiceTemplate->clearTemplateVars(); } @@ -549,13 +547,14 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { return $html; } else { - CRM_Utils_PDF_Utils::html2pdf($messageInvoice, 'Invoice.pdf', FALSE, array( + $pdfFileName = "{$invoiceId}.pdf"; + CRM_Utils_PDF_Utils::html2pdf($messageInvoice, $pdfFileName, FALSE, array( 'margin_top' => 10, 'margin_left' => 65, 'metric' => 'px', )); // functions call for adding activity with attachment - $fileName = self::putFile($html); + $fileName = self::putFile($html, $pdfFileName); self::addActivities($subject, $contactIds, $fileName, $params); CRM_Utils_System::civiExit(); @@ -633,14 +632,14 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { * @return string * Name of file which is in pdf format */ - static public function putFile($html) { + static public function putFile($html, $name = 'Invoice.pdf') { require_once "vendor/dompdf/dompdf/dompdf_config.inc.php"; $doc = new DOMPDF(); $doc->load_html($html); $doc->render(); $html = $doc->output(); $config = CRM_Core_Config::singleton(); - $fileName = $config->uploadDir . 'Invoice.pdf'; + $fileName = $config->uploadDir . $name; file_put_contents($fileName, $html); return $fileName; }