InvoicePlane v1.4.10 – Enabling Date Parameters
As an update to https://jefferytay.wordpress.com/2016/02/25/invoiceplaneenabling-date-parameters/
File: Application\helpers\pdf_helper.php
Action:
Replace
$items = $CI->mdl_items->where(‘invoice_id’, $invoice_id)->get()->result();
with
$items = $CI->mdl_items->get_items_and_replace_vars($invoice_id, $invoice->invoice_date_due);
File: application\modules\guest\controllers\view.php
Action:
Replace
‘items’ => $this->mdl_items->where(‘invoice_id’, $invoice->invoice_id)->get()->result(),
with
‘items’ => $this->mdl_items->get_items_and_replace_vars($invoice->invoice_id, $invoice->invoice_date_due),
File: application\modules\invoices\models\mdl_items.php
Action:
Add the following lines after "class Mdl_Items extends Response_Model {"
///Modify – ADDED
public function get_items_and_replace_vars($invoice_id, $invoice_date_created = ‘now’)
{
$items = array();
$query = $this->where(‘invoice_id’, $invoice_id)->get();
foreach($query->result() as $item) {
$item->item_name = $this->parse_item($item->item_name, $invoice_date_created);
$item->item_description = $this->parse_item($item->item_description, $invoice_date_created);
$items[] = $item;
}
return $items;
}
//Modify – ADDED
private function parse_item($string, $invoice_date_created)
{
if (preg_match_all(‘/{{{(?<format>[yYmMdD])(?:(?<=[Yy])ear|(?<=[Mm])onth|(?<=[Dd])ay)(?:(?<operation>[-+])(?<amount>[1-9]+))?}}}/m’, $string, $template_vars, PREG_SET_ORDER)) {
try {
$formattedDate = new DateTime($invoice_date_created);
}
catch(Exception $e) { // If creating a date based on the invoice_date_created isn’t possible, use current date
$formattedDate = new DateTime();
}
/* Calculate the date first, before starting replacing the variables */
foreach($template_vars as $var) {
if(!isset($var[‘operation’], $var[‘amount’])) continue;
if($var[‘operation’] == ‘-‘) {
$formattedDate->sub( new DateInterval(‘P’ . $var[‘amount’] . strtoupper($var[‘format’])) );
}
else if($var[‘operation’] == ‘+’) {
$formattedDate->add( new DateInterval(‘P’ . $var[‘amount’] . strtoupper($var[‘format’])) );
}
}
/* Let’s replace all variables */
foreach($template_vars as $var) {
$string = str_replace($var[0], $formattedDate->format($var[‘format’]), $string);
}
}
return $string;
}
Changing the default folder path for Outlook
By default, Microsoft Outlook saves the email files in \User\[UserName]\AppData\Local\Microsoft\Outlook
If you want to change it to a different folder,
- Open registry editor
- Goto HKCU\Software\Microsoft\Office\xx.0\Outlook
- Add a new string value called ForceOSTPath and set the value to the folder path where the data files should be stored
Enabling Search for Local Administrator Account in Windows Server 2016
By default, Windows Server 2016 will severely limit the access rights of the local administrator account.
Here are the steps to promote the account so that you can use it as a normal account
Run gpedit.msc
Goto Computer Configuration > Administrative Template > Windows Components > Search
Set Allow Cortana to Disabled
Next goto Computer Configuration > Windows Settings > Security Settings > Local Policies > Security Options
Set User Account Control: Admin Approval Mode for the Built-in Administrator Account to Enabled
Now reset the machine and the local administrator will behave like a normal user account