diff --git a/CHANGELOG.md b/CHANGELOG.md index 262ab4f4..ca4727e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Add yellow color to table for plan not allowed to purchase - Fix Radius pool select - add price to reminder notification +- Support thermal printer for invoice ## 2024.1.15 diff --git a/system/autoload/Lang.php b/system/autoload/Lang.php index 6736c700..38d56e3a 100644 --- a/system/autoload/Lang.php +++ b/system/autoload/Lang.php @@ -99,4 +99,28 @@ class Lang } return $result; } + + /** + * $pad_type + * 0 Left + * 1 right + * 2 center + * */ + public static function pad($text, $pad_string = ' ', $pad_type = 0){ + global $config; + $cols = 37; + if($config['printer_cols']){ + $cols = $config['printer_cols']; + } + return str_pad($text, $cols, $pad_string, $pad_type); + } + + public static function pads($textLeft, $textRight, $pad_string = ' '){ + global $config; + $cols = 37; + if($config['printer_cols']){ + $cols = $config['printer_cols']; + } + return $textLeft.str_pad($textRight, $cols-strlen($textLeft), $pad_string, 0); + } } diff --git a/ui/ui/app-settings.tpl b/ui/ui/app-settings.tpl index f84b56f5..12854e41 100644 --- a/ui/ui/app-settings.tpl +++ b/ui/ui/app-settings.tpl @@ -53,6 +53,14 @@ <input type="text" class="form-control" id="phone" name="phone" value="{$_c['phone']}"> </div> </div> + <div class="form-group"> + <label class="col-md-2 control-label"><i class="glyphicon glyphicon-print"></i> Print Max Char</label> + <div class="col-md-6"> + <input type="number" required class="form-control" id="printer_cols" placeholder="37" name="printer_cols" + value="{$_c['printer_cols']}"> + </div> + <span class="help-block col-md-4">For invoice print using Thermal Printer</span> + </div> <div class="form-group"> <label class="col-md-2 control-label">Theme</label> <div class="col-md-6"> diff --git a/ui/ui/invoice-print.tpl b/ui/ui/invoice-print.tpl index 09899735..21b98a93 100644 --- a/ui/ui/invoice-print.tpl +++ b/ui/ui/invoice-print.tpl @@ -21,30 +21,27 @@ <table width="200"> <tr> <td> - <fieldset> - <center> - <b>{$_c['CompanyName']}</b><br> - {$_c['address']}<br> - {$_c['phone']}<br> - </center> - ============================================<br> - INVOICE: <b>{$d['invoice']}</b> - {$_L['Date']} : {$date}<br> - {$_L['Sales']} : {$_admin['fullname']}<br> - ============================================<br> - {$_L['Type']} : <b>{$d['type']}</b><br> - {$_L['Plan_Name']} : <b>{$d['plan_name']}</b><br> - {$_L['Plan_Price']} : <b>{Lang::moneyFormat($d['price'])}</b><br> - <br> - {$_L['Username']} : <b>{$d['username']}</b><br> - {$_L['Password']} : **********<br> - {if $in['type'] != 'Balance'} - <br> - {$_L['Created_On']} : <b>{Lang::dateAndTimeFormat($d['recharged_on'],$d['recharged_time'])}</b><br> - {$_L['Expires_On']} : <b>{Lang::dateAndTimeFormat($d['expiration'],$d['time'])}</b><br> - {/if} - ============================================<br> - <center>{$_c['note']}</center> - </fieldset> +<pre style="border-style: none; background-color: white;"><b>{Lang::pad($_c['CompanyName'],' ', 2)}</b> +{Lang::pad($_c['address'],' ', 2)} +{Lang::pad($_c['phone'],' ', 2)} +{Lang::pad("", '=')} +{Lang::pads("Invoice", $in['invoice'], ' ')} +{Lang::pads($_L['Date'], $date, ' ')} +{Lang::pads($_L['Sales'], $_admin['fullname'], ' ')} +{Lang::pad("", '=')} +{Lang::pads($_L['Type'], $in['type'], ' ')} +{Lang::pads($_L['Plan_Name'], $in['plan_name'], ' ')} +{Lang::pads($_L['Plan_Price'], Lang::moneyFormat($in['price']), ' ')} +{Lang::pad($in['method'], ' ', 2)} + +{Lang::pads($_L['Username'], $in['username'], ' ')} +{Lang::pads($_L['Password'], '**********', ' ')} +{if $in['type'] != 'Balance'} +{Lang::pads($_L['Created_On'], Lang::dateAndTimeFormat($in['recharged_on'],$in['recharged_time']), ' ')} +{Lang::pads($_L['Expires_On'], Lang::dateAndTimeFormat($in['expiration'],$in['time']), ' ')} +{/if} +{Lang::pad("", '=')} +{Lang::pad($_c['note'],' ', 2)}</pre> </td> </tr> </table> diff --git a/ui/ui/invoice.tpl b/ui/ui/invoice.tpl index 0c9fa384..eec58810 100644 --- a/ui/ui/invoice.tpl +++ b/ui/ui/invoice.tpl @@ -5,42 +5,36 @@ <div class="panel panel-hovered panel-primary panel-stacked mb30"> <div class="panel-heading">{$in['invoice']}</div> <div class="panel-body"> - <div class="well"> - <fieldset> - <center> - <b>{$_c['CompanyName']}</b><br> - {$_c['address']}<br> - {$_c['phone']}<br> - </center> - ====================================================<br> - INVOICE: <b>{$in['invoice']}</b> - {$_L['Date']} : {$date}<br> - {$_L['Sales']} : {$_admin['fullname']}<br> - ====================================================<br> - {$_L['Type']} : <b>{$in['type']}</b><br> - {$_L['Plan_Name']} : <b>{$in['plan_name']}</b><br> - {$_L['Plan_Price']} : <b>{Lang::moneyFormat($in['price'])}</b><br> - {$in['method']}<br> - <br> - {$_L['Username']} : <b>{$in['username']}</b><br> - {$_L['Password']} : **********<br> - {if $in['type'] != 'Balance'} - <br> - {$_L['Created_On']} : <b>{Lang::dateAndTimeFormat($in['recharged_on'],$in['recharged_time'])}</b><br> - {$_L['Expires_On']} : <b>{Lang::dateAndTimeFormat($in['expiration'],$in['time'])}</b><br> - {/if} - =====================================================<br> - <center>{$_c['note']}</center> - </fieldset> - </div> - <form class="form-horizontal" method="post" action="{$_url}prepaid/print" target="_blank"> - <input type="hidden" name="id" value="{$in['id']}"> - <a href="{$_url}prepaid/list" class="btn btn-primary btn-sm"><i - class="ion-reply-all"></i>{$_L['Finish']}</a> - <a href="{$_url}prepaid/view/{$in['id']}/send" class="btn btn-info text-black btn-sm"><i - class="glyphicon glyphicon-envelope"></i> {Lang::T("Resend To Customer")}</a> - <button type="submit" class="btn btn-default btn-sm"><i class="fa fa-print"></i> - {$_L['Click_Here_to_Print']}</button> - </form> +<pre><b>{Lang::pad($_c['CompanyName'],' ', 2)}</b> +{Lang::pad($_c['address'],' ', 2)} +{Lang::pad($_c['phone'],' ', 2)} +{Lang::pad("", '=')} +{Lang::pads("Invoice", $in['invoice'], ' ')} +{Lang::pads($_L['Date'], $date, ' ')} +{Lang::pads($_L['Sales'], $_admin['fullname'], ' ')} +{Lang::pad("", '=')} +{Lang::pads($_L['Type'], $in['type'], ' ')} +{Lang::pads($_L['Plan_Name'], $in['plan_name'], ' ')} +{Lang::pads($_L['Plan_Price'], Lang::moneyFormat($in['price']), ' ')} +{Lang::pad($in['method'], ' ', 2)} + +{Lang::pads($_L['Username'], $in['username'], ' ')} +{Lang::pads($_L['Password'], '**********', ' ')} +{if $in['type'] != 'Balance'} +{Lang::pads($_L['Created_On'], Lang::dateAndTimeFormat($in['recharged_on'],$in['recharged_time']), ' ')} +{Lang::pads($_L['Expires_On'], Lang::dateAndTimeFormat($in['expiration'],$in['time']), ' ')} +{/if} +{Lang::pad("", '=')} +{Lang::pad($_c['note'],' ', 2)}</pre> +<form class="form-horizontal" method="post" action="{$_url}prepaid/print" target="_blank"> + <input type="hidden" name="id" value="{$in['id']}"> + <a href="{$_url}prepaid/list" class="btn btn-primary btn-sm"><i + class="ion-reply-all"></i>{$_L['Finish']}</a> + <a href="{$_url}prepaid/view/{$in['id']}/send" class="btn btn-info text-black btn-sm"><i + class="glyphicon glyphicon-envelope"></i> {Lang::T("Resend To Customer")}</a> + <button type="submit" class="btn btn-default btn-sm"><i class="fa fa-print"></i> + {$_L['Click_Here_to_Print']}</button> +</form> </div> </div>