public function invoice($invoice_id) { if ($this->mailer_configured == TRUE) { if ($this->input->post('btn_send')) { $from = $this->input->post('from_name') ? array($this->input->post('from_email'), $this->input->post('from_name')) : $this->input->post('from_email'); $invoice_template = $this->input->post('invoice_template'); $to = $this->input->post('to_email'); $subject = $this->input->post('subject'); $body = $this->input->post('body') ?: ' '; $cc = $this->input->post('to_cc'); $bcc = $this->input->post('to_bcc'); if (email_invoice($invoice_id, $invoice_template, $from, $to, $subject, $body, $cc, $bcc)) { $this->mdl_invoices->mark_sent($invoice_id); $this->session->set_flashdata('alert_success', lang('email_successfully_sent')); redirect('dashboard'); } else { redirect('mailer/invoice/' . $invoice_id); } } $this->load->model('invoices/mdl_templates'); $this->load->model('invoices/mdl_invoices'); $this->load->model('email_templates/mdl_email_templates'); $invoice = $this->mdl_invoices->where('fi_invoices.invoice_id', $invoice_id)->get()->row(); $this->load->helper('template'); $selected_pdf_template = select_pdf_invoice_template($invoice); $selected_email_template = select_email_invoice_template($invoice); if ($selected_email_template) { $email_template = $this->mdl_email_templates->where('email_template_id', $selected_email_template)->get(); if ($email_template->num_rows()) { $this->layout->set('body', $email_template->row()->email_template_body); } else { $this->layout->set('body', ''); } } else { $this->layout->set('body', ''); } $this->layout->set('selected_pdf_template', $selected_pdf_template); $this->layout->set('selected_email_template', $selected_email_template); $this->layout->set('email_templates', $this->mdl_email_templates->get()->result()); $this->layout->set('invoice', $invoice); $this->layout->set('invoice_templates', $this->mdl_templates->get_invoice_templates()); $this->layout->buffer('content', 'mailer/invoice'); $this->layout->render(); } else { $this->layout->buffer('content', 'mailer/not_configured'); $this->layout->render(); } }
public function recur($cron_key = NULL) { if ($cron_key == $this->mdl_settings->setting('cron_key')) { $this->load->model('invoices/mdl_invoices_recurring'); $this->load->model('invoices/mdl_invoices'); $this->load->helper('mailer'); // Gather a list of recurring invoices to generate $invoices_recurring = $this->mdl_invoices_recurring->active()->get()->result(); foreach ($invoices_recurring as $invoice_recurring) { // This is the original invoice id $source_id = $invoice_recurring->invoice_id; // This is the original invoice // $invoice = $this->db->where('ip_invoices.invoice_id', $source_id)->get('ip_invoices')->row(); $invoice = $this->mdl_invoices->get_by_id($source_id); // Create the new invoice $db_array = array('client_id' => $invoice->client_id, 'invoice_date_created' => $invoice_recurring->recur_next_date, 'invoice_date_due' => $this->mdl_invoices->get_date_due($invoice_recurring->recur_next_date), 'invoice_group_id' => $invoice->invoice_group_id, 'user_id' => $invoice->user_id, 'invoice_number' => $this->mdl_invoices->get_invoice_number($invoice->invoice_group_id), 'invoice_url_key' => $this->mdl_invoices->get_url_key(), 'invoice_terms' => $invoice->invoice_terms); // This is the new invoice id $target_id = $this->mdl_invoices->create($db_array, FALSE); // Copy the original invoice to the new invoice $this->mdl_invoices->copy_invoice($source_id, $target_id); // Update the next recur date for the recurring invoice $this->mdl_invoices_recurring->set_next_recur_date($invoice_recurring->invoice_recurring_id); // Email the new invoice if applicable if ($this->mdl_settings->setting('automatic_email_on_recur') and mailer_configured()) { $new_invoice = $this->mdl_invoices->get_by_id($target_id); // Set the email body, use default email template if available $this->load->model('email_templates/mdl_email_templates'); $email_template_id = $this->mdl_settings->setting('email_invoice_template'); if (!$email_template_id) { return; } $email_template = $this->mdl_email_templates->where('email_template_id', $email_template_id)->get(); if ($email_template->num_rows() == 0) { return; } $tpl = $email_template->row(); $from = !empty($tpl->email_template_from_email) ? array($tpl->email_template_from_email, $tpl->email_template_from_name) : array($invoice->user_email, ""); $subject = !empty($tpl->email_template_subject) ? $tpl->email_template_subject : lang('invoice') . ' #' . $new_invoice->invoice_number; email_invoice($target_id, $tpl->email_template_pdf_template, $from, $invoice->client_email, $subject, $tpl->email_template_body, $tpl->email_template_cc, $tpl->email_template_bcc); $this->mdl_invoices->mark_sent($target_id); } } } }
public function recur($cron_key = null) { if ($cron_key == $this->mdl_settings->setting('cron_key')) { $this->load->model('invoices/mdl_invoices_recurring'); $this->load->model('invoices/mdl_invoices'); $this->load->helper('mailer'); // Gather a list of recurring invoices to generate $invoices_recurring = $this->mdl_invoices_recurring->active()->get()->result(); foreach ($invoices_recurring as $invoice_recurring) { // This is the original invoice id $source_id = $invoice_recurring->invoice_id; // This is the original invoice // $invoice = $this->db->where('ip_invoices.invoice_id', $source_id)->get('ip_invoices')->row(); $invoice = $this->mdl_invoices->get_by_id($source_id); // Create the new invoice $db_array = array('client_id' => $invoice->client_id, 'invoice_date_created' => $invoice_recurring->recur_next_date, 'invoice_date_due' => $this->mdl_invoices->get_date_due($invoice_recurring->recur_next_date), 'invoice_group_id' => $invoice->invoice_group_id, 'user_id' => $invoice->user_id, 'invoice_number' => $this->mdl_invoices->get_invoice_number($invoice->invoice_group_id), 'invoice_url_key' => $this->mdl_invoices->get_url_key(), 'invoice_terms' => $invoice->invoice_terms); // This is the new invoice id $target_id = $this->mdl_invoices->create($db_array, false); // Copy the original invoice to the new invoice $this->mdl_invoices->copy_invoice($source_id, $target_id); // Update the next recur date for the recurring invoice $this->mdl_invoices_recurring->set_next_recur_date($invoice_recurring->invoice_recurring_id); // Email the new invoice if applicable if ($this->mdl_settings->setting('automatic_email_on_recur') and mailer_configured()) { $new_invoice = $this->mdl_invoices->get_by_id($target_id); // Set the email body, use default email template if available $this->load->model('email_templates/mdl_email_templates'); $email_template_id = $this->mdl_settings->setting('email_invoice_template'); if (!$email_template_id) { return; } $email_template = $this->mdl_email_templates->where('email_template_id', $email_template_id)->get(); if ($email_template->num_rows() == 0) { return; } $tpl = $email_template->row(); // Prepare the attachments $this->load->model('upload/mdl_uploads'); $attachment_files = $this->mdl_uploads->get_invoice_uploads($target_id); // Prepare the body $body = $tpl->email_template_body; if (strlen($body) != strlen(strip_tags($body))) { $body = htmlspecialchars_decode($body); } else { $body = htmlspecialchars_decode(nl2br($body)); } $from = !empty($tpl->email_template_from_email) ? array($tpl->email_template_from_email, $tpl->email_template_from_name) : array($invoice->user_email, ""); $subject = !empty($tpl->email_template_subject) ? $tpl->email_template_subject : trans('invoice') . ' #' . $new_invoice->invoice_number; $pdf_template = $tpl->email_template_pdf_template; $to = $invoice->client_email; $cc = $tpl->email_template_cc; $bcc = $tpl->email_template_bcc; if (email_invoice($target_id, $pdf_template, $from, $to, $subject, $body, $cc, $bcc, $attachment_files)) { $this->mdl_invoices->mark_sent($target_id); $this->mdl_invoice_amounts->calculate($target_id); } else { log_message('warning', 'Invoice ' . $target_id . 'could not be sent. Please review your Email settings.'); } } } } }
public function send_invoice($invoice_id) { if ($this->input->post('btn_cancel')) { redirect('invoices'); } if (!$this->mailer_configured) { return; } $this->load->model('upload/mdl_uploads'); $from = array($this->input->post('from_email'), $this->input->post('from_name')); $pdf_template = $this->input->post('pdf_template'); $to = $this->input->post('to_email'); $subject = $this->input->post('subject'); if (strlen($this->input->post('body')) != strlen(strip_tags($this->input->post('body')))) { $body = htmlspecialchars_decode($this->input->post('body')); } else { $body = htmlspecialchars_decode(nl2br($this->input->post('body'))); } $cc = $this->input->post('cc'); $bcc = $this->input->post('bcc'); $attachment_files = $this->mdl_uploads->get_invoice_uploads($invoice_id); if (email_invoice($invoice_id, $pdf_template, $from, $to, $subject, $body, $cc, $bcc, $attachment_files)) { $this->mdl_invoices->mark_sent($invoice_id); $this->session->set_flashdata('alert_success', lang('email_successfully_sent')); redirect('dashboard'); } else { redirect('mailer/invoice/' . $invoice_id); } }