mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-05-25 16:54:58 -04:00
Compare commits
7 Commits
fix-requis
...
ui-improve
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
14716e924f | ||
|
|
beb18ff96b | ||
|
|
7ad1bfa0fb | ||
|
|
9cc24f0c70 | ||
|
|
b86e5ca6ef | ||
|
|
4879fe2cf3 | ||
|
|
a5b2b5f771 |
26
LICENSE
26
LICENSE
@@ -1,30 +1,30 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2013-2023 jekkos
|
||||
Copyright (c) 2013-2025 jekkos
|
||||
Copyright (c) 2017-2025 objecttothis
|
||||
Copyright (c) 2017-2024 Steve Ireland
|
||||
Copyright (c) 2017-2025 odiea
|
||||
Copyright (c) 2018-2024 WebShells
|
||||
Copyright (c) 2021-2025 BudsieBuds
|
||||
Copyright (c) 2015-2023 FrancescoUK (aka daN4cat)
|
||||
Copyright (c) 2017-2023 Steve Ireland
|
||||
Copyright (c) 2017-2023 objecttothis
|
||||
Copyright (c) 2017-2023 odiea
|
||||
Copyright (c) 2017-2023 WebShells
|
||||
Copyright (c) 2020-2021 Andriux1990
|
||||
Copyright (c) 2021 BudsieBuds
|
||||
Copyright (c) 2015-2022 Aamir Shahzad (aka asakpke), RoshanTech, eSite.pk
|
||||
Copyright (c) 2019-2020 Andriux1990
|
||||
Copyright (c) 2018-2019 Erasto Marroquin (aka Erastus)
|
||||
Copyright (c) 2019 Loyd Jayme (aka loydjayme25)
|
||||
Copyright (c) 2018 Erasto Marroquin (aka Erastus)
|
||||
Copyright (c) 2018 Nathan Sas (aka nathanzky)
|
||||
Copyright (c) 2018 Emilio Silva (aka emi-silva)
|
||||
Copyright (c) 2017 Jesus Guerrero Botella (aka i92guboj)
|
||||
Copyright (c) 2016-2017 Ramkrishna Mondal (aka RamkrishnaMondal)
|
||||
Copyright (c) 2016-2017 Jorge Colmenarez (aka jlctmaster), frontuari.com
|
||||
Copyright (c) 2016-2017 Jesus Guerrero Botella (aka i92guboj)
|
||||
Copyright (c) 2017 Deep Shah (aka deepshah)
|
||||
Copyright (c) 2017 Joshua Fernandez (aka joshua1234511)
|
||||
Copyright (c) 2017 asadjaved63
|
||||
Copyright (c) 2016-2017 Ramkrishna Mondal (aka RamkrishnaMondal)
|
||||
Copyright (c) 2016-2017 Jorge Colmenarez (aka jlctmaster), frontuari.com
|
||||
Copyright (c) 2016 Rinaldy@dbarber (aka rnld26)
|
||||
Copyright (c) 2015-2022 Aamir Shahzad (aka asakpke), RoshanTech, eSite.pk
|
||||
Copyright (c) 2015 Toni Haryanto (aka yllumi)
|
||||
Copyright (c) 2012-2014 pappastech
|
||||
Copyright (c) 2013 Rob Garrison
|
||||
Copyright (c) 2013 Parq
|
||||
Copyright (c) 2013 Ramel
|
||||
Copyright (c) 2012-2014 pappastech
|
||||
Copyright (c) 2012 Alain
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
||||
@@ -137,7 +137,7 @@ Any person or company found breaching the license agreement might find a bunch o
|
||||
|
||||
## 🙏 Credits
|
||||
|
||||
| <div align="center">DigitalOcean</div> | <div align="center">JetBrains</div> | <div align="center">Travis CI</div> |
|
||||
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- | --- |
|
||||
| <div align="center"><a href="https://www.digitalocean.com?utm_medium=opensource&utm_source=opensourcepos" target="_blank"><img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg" alt="DigitalOcean Logo" height="50"></a></div> | <div align="center"><a href="https://www.jetbrains.com/idea/" target="_blank"><img src="https://github.com/opensourcepos/opensourcepos/assets/12870258/187f9bbe-4484-475c-9b58-5e5d5f931f09" alt="IntelliJ IDEA Logo" height="50"></a></div> | <div align="center"><a href="https://www.travis-ci.com/" target="_blank"><img src="https://github.com/opensourcepos/opensourcepos/assets/12870258/71cc2b44-83af-4510-a543-6358285f43c6" alt="Travis CI Logo" height="50"></a></div> |
|
||||
| Many thanks to [Digital Ocean](https://www.digitalocean.com) for providing the project with hosting credits | Many thanks to [JetBrains](https://www.jetbrains.com/) for providing a free license of [IntelliJ IDEA](https://www.jetbrains.com/idea/) to kindly support the development of OSPOS. | Many thanks to [Travis CI](https://www.travis-ci.com/) for providing a free continuous integration service for open source projects. |
|
||||
| <div align="center">DigitalOcean</div> | <div align="center">JetBrains</div> | <div align="center">Travis CI</div> |
|
||||
| --- | --- | --- |
|
||||
| <div align="center"><a href="https://www.digitalocean.com?utm_medium=opensource&utm_source=opensourcepos" target="_blank"><img src="https://github.com/user-attachments/assets/fbbf7433-ed35-407d-8946-fd03d236d350" alt="DigitalOcean Logo" height="50"></a></div> | <div align="center"><a href="https://www.jetbrains.com/idea/" target="_blank"><img src="https://github.com/opensourcepos/opensourcepos/assets/12870258/187f9bbe-4484-475c-9b58-5e5d5f931f09" alt="IntelliJ IDEA Logo" height="50"></a></div> | <div align="center"><a href="https://www.travis-ci.com/" target="_blank"><img src="https://github.com/opensourcepos/opensourcepos/assets/12870258/71cc2b44-83af-4510-a543-6358285f43c6" alt="Travis CI Logo" height="50"></a></div> |
|
||||
| Many thanks to [DigitalOcean](https://www.digitalocean.com) for providing the project with hosting credits. | Many thanks to [JetBrains](https://www.jetbrains.com/) for providing a free license of [IntelliJ IDEA](https://www.jetbrains.com/idea/) to kindly support the development of OSPOS. | Many thanks to [Travis CI](https://www.travis-ci.com/) for providing a free continuous integration service for open source projects. |
|
||||
|
||||
@@ -109,7 +109,7 @@ class OSPOSRules
|
||||
private function installation_check(): bool
|
||||
{
|
||||
$installed_extensions = implode(', ', get_loaded_extensions());
|
||||
$required_extensions = ['bcmath', 'intl', 'gd', 'openssl', 'mbstring', 'curl'];
|
||||
$required_extensions = ['bcmath', 'intl', 'gd', 'openssl', 'mbstring', 'curl', 'xml', 'json'];
|
||||
$pattern = '/';
|
||||
|
||||
foreach($required_extensions as $extension)
|
||||
@@ -140,22 +140,6 @@ class OSPOSRules
|
||||
*/
|
||||
public function decimal_locale(string $candidate, ?string &$error = null): bool
|
||||
{
|
||||
$validation = Services::validation();
|
||||
|
||||
$validation->setRules([
|
||||
'candidate' => 'decimal'
|
||||
]);
|
||||
|
||||
$data = [
|
||||
'candidate' => $candidate
|
||||
];
|
||||
|
||||
if (!$validation->run($data))
|
||||
{
|
||||
$error = $validation->getErrors();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
return parse_decimals($candidate) !== false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ class Config extends Secure_Controller
|
||||
$license[$i]['title'] = 'Open Source Point Of Sale ' . config('App')->application_version;
|
||||
|
||||
if (file_exists('license/LICENSE')) {
|
||||
$license[$i]['text'] = file_get_contents('license/LICENSE', false, null, 0, 2000);
|
||||
$license[$i]['text'] = file_get_contents('license/LICENSE', false, null, 0, 3000);
|
||||
} else {
|
||||
$license[$i]['text'] = 'LICENSE file must be in OSPOS license directory. You are not allowed to use OSPOS application until the distribution copy of LICENSE file is present.';
|
||||
}
|
||||
@@ -139,13 +139,13 @@ class Config extends Secure_Controller
|
||||
$license[$i]['text'] .= "$val3 ";
|
||||
}
|
||||
|
||||
$license[$i]['text'] .= '\n';
|
||||
$license[$i]['text'] .= "\n";
|
||||
} else {
|
||||
$license[$i]['text'] .= "$key2: $val2\n";
|
||||
}
|
||||
}
|
||||
|
||||
$license[$i]['text'] .= '\n';
|
||||
$license[$i]['text'] .= "\n";
|
||||
} else {
|
||||
$license[$i]['text'] .= "$key1: $val1\n";
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ class Items extends Secure_Controller
|
||||
*/
|
||||
public function getSuggestLowSell(): void
|
||||
{
|
||||
$suggestions = $this->item->get_low_sell_suggestions($this->request->getPo1stGet('name'));
|
||||
$suggestions = $this->item->get_low_sell_suggestions($this->request->getPostGet('name'));
|
||||
|
||||
echo json_encode($suggestions);
|
||||
}
|
||||
|
||||
@@ -606,7 +606,7 @@ class Sales extends Secure_Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!$this->sale_lib->add_item($item_id_or_number_or_item_kit_or_receipt, $item_location, $quantity, $discount, $discount_type, PRICE_MODE_STANDARD, null, null, $price))
|
||||
if($item_id_or_number_or_item_kit_or_receipt == '' || !$this->sale_lib->add_item($item_id_or_number_or_item_kit_or_receipt, $item_location, $quantity, $discount, $discount_type, PRICE_MODE_STANDARD, null, null, $price))
|
||||
{
|
||||
$data['error'] = lang('Sales.unable_to_add_item');
|
||||
}
|
||||
@@ -984,21 +984,21 @@ class Sales extends Secure_Controller
|
||||
if(!empty($sale_data['customer_email']))
|
||||
{
|
||||
$to = $sale_data['customer_email'];
|
||||
$number = $sale_data[$type."_number"];
|
||||
$number = array_key_exists($type."_number", $sale_data) ? $sale_data[$type."_number"] : "";
|
||||
$subject = lang('Sales.' . $type) . ' ' . $number;
|
||||
|
||||
$text = $this->config['invoice_email_message'];
|
||||
$tokens = [
|
||||
new Token_invoice_sequence($sale_data['invoice_number']),
|
||||
new Token_invoice_count('POS ' . $sale_data['sale_id']),
|
||||
new Token_customer((object)$sale_data)
|
||||
new Token_customer((array)$sale_data)
|
||||
];
|
||||
$text = $this->token_lib->render($text, $tokens);
|
||||
$sale_data['mimetype'] = mime_content_type(FCPATH . 'uploads/' . $this->config['company_logo']);
|
||||
|
||||
// generate email attachment: invoice in pdf format
|
||||
$view = Services::renderer();
|
||||
$html = $view->render("sales/$type" . '_email', $sale_data);
|
||||
$html = $view->setData($sale_data)->render("sales/$type" . '_email', $sale_data);
|
||||
|
||||
// load pdf helper
|
||||
helper (['dompdf', 'file']);
|
||||
@@ -1040,7 +1040,7 @@ class Sales extends Secure_Controller
|
||||
$subject = lang('Sales.receipt');
|
||||
|
||||
$view = Services::renderer();
|
||||
$text = $view->render('sales/receipt_email', $sale_data);
|
||||
$text = $view->setData($sale_data)->render('sales/receipt_email');
|
||||
|
||||
$result = $this->email_lib->sendEmail($to, $subject, $text);
|
||||
|
||||
|
||||
@@ -26,27 +26,26 @@ class Email_lib
|
||||
$this->config = config(OSPOS::class)->settings;
|
||||
|
||||
$encrypter = Services::encrypter();
|
||||
|
||||
|
||||
$smtp_pass = $this->config['smtp_pass'];
|
||||
if(!empty($smtp_pass))
|
||||
{
|
||||
$smtp_pass = $encrypter->decrypt($smtp_pass);
|
||||
$smtp_pass = $encrypter->decrypt($smtp_pass);
|
||||
}
|
||||
|
||||
|
||||
$email_config = [
|
||||
'mailtype' => 'html',
|
||||
'useragent' => 'OSPOS',
|
||||
'validate' => true,
|
||||
'protocol' => $this->config['protocol'],
|
||||
'mailpath' => $this->config['mailpath'],
|
||||
'smtp_host' => $this->config['smtp_host'],
|
||||
'smtp_user' => $this->config['smtp_user'],
|
||||
'smtp_pass' => $smtp_pass,
|
||||
'smtp_port' => $this->config['smtp_port'],
|
||||
'smtp_timeout' => $this->config['smtp_timeout'],
|
||||
'smtp_crypto' => $this->config['smtp_crypto']
|
||||
'mailType' => 'html',
|
||||
'userAgent' => 'OSPOS',
|
||||
'validate' => true,
|
||||
'protocol' => $this->config['protocol'],
|
||||
'mailPath' => $this->config['mailpath'],
|
||||
'SMTPHost' => $this->config['smtp_host'],
|
||||
'SMTPUser' => $this->config['smtp_user'],
|
||||
'SMTPPass' => $smtp_pass,
|
||||
'SMTPPort' => (int)$this->config['smtp_port'],
|
||||
'SMTPTimeout' => (int)$this->config['smtp_timeout'],
|
||||
'SMTPCrypto' => $this->config['smtp_crypto']
|
||||
];
|
||||
|
||||
$this->email->initialize($email_config);
|
||||
}
|
||||
|
||||
|
||||
@@ -246,7 +246,7 @@ class Receiving_lib
|
||||
* @param string $stock_destination
|
||||
* @return void
|
||||
*/
|
||||
public function set_stock_destination(string $stock_destination): void
|
||||
public function set_stock_destination(?string $stock_destination): void
|
||||
{
|
||||
$this->session->set('recv_stock_destination', $stock_destination);
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ class Receiving extends Model
|
||||
/**
|
||||
* @throws ReflectionException
|
||||
*/
|
||||
public function save_value(array $items, int $supplier_id, int $employee_id, string $comment, string $reference, string $payment_type, int $receiving_id = NEW_ENTRY): int //TODO: $receiving_id gets overwritten before it's evaluated. It doesn't make sense to pass this here.
|
||||
public function save_value(array $items, int $supplier_id, int $employee_id, string $comment, string $reference, ?string $payment_type, int $receiving_id = NEW_ENTRY): int //TODO: $receiving_id gets overwritten before it's evaluated. It doesn't make sense to pass this here.
|
||||
{
|
||||
$attribute = model(Attribute::class);
|
||||
$inventory = model('Inventory');
|
||||
@@ -187,7 +187,6 @@ class Receiving extends Model
|
||||
|
||||
$inventory->insert($inv_data, false);
|
||||
$attribute->copy_attribute_links($item_data['item_id'], 'receiving_id', $receiving_id);
|
||||
$supplier = $supplier->get_info($supplier_id); //TODO: supplier is never used after this.
|
||||
}
|
||||
|
||||
$this->db->transComplete();
|
||||
|
||||
@@ -11,13 +11,13 @@ use App\Models\Customer;
|
||||
**/
|
||||
class Token_customer extends Token
|
||||
{
|
||||
private string $customer_info;
|
||||
private array $customer_info;
|
||||
private Sale_lib $sale_lib;
|
||||
|
||||
/**
|
||||
* @param string $customer_info
|
||||
*/
|
||||
public function __construct(string $customer_info = '')
|
||||
public function __construct(array $customer_info = [])
|
||||
{
|
||||
parent::__construct();
|
||||
$this->customer_info = $customer_info;
|
||||
|
||||
@@ -42,6 +42,7 @@ use Config\OSPOS;
|
||||
echo "» OpenSSL: ", extension_loaded('openssl') ? '<span style="color: green;">Enabled ✓</span>' : '<span style="color: red">Disabled ✗</span>', '<br>';
|
||||
echo "» MBString: ", extension_loaded('mbstring') ? '<span style="color: green;">Enabled ✓</span>' : '<span style="color: red">Disabled ✗</span>', '<br>';
|
||||
echo "» Curl: ", extension_loaded('curl') ? '<span style="color: green;">Enabled ✓</span>' : '<span style="color: red">Disabled ✗</span>', '<br>';
|
||||
echo "» Json: ", extension_loaded('json') ? '<span style="color: green;">Enabled ✓</span>' : '<span style="color: red">Disabled ✗</span>', '<br><br>';
|
||||
echo "» Xml: ", extension_loaded('xml') ? '<span style="color: green;">Enabled ✓</span>' : '<span style="color: red">Disabled ✗</span>', '<br><br>';
|
||||
?>
|
||||
User Configuration:<br>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<html lang="<?= current_language_code() ?>">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta charset="utf-8">
|
||||
<base href="<?= base_url() ?>">
|
||||
<title><?= $config['company'] . ' | ' . lang('Common.software_short') . ' | ' . lang('Login.login') ?></title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
@@ -26,7 +26,7 @@
|
||||
? 'flatly'
|
||||
: $config['theme']);
|
||||
?>
|
||||
<link rel="stylesheet" type="text/css" href="<?= "resources/bootswatch5/$theme/bootstrap.min.css" ?>">
|
||||
<link rel="stylesheet" type="text/css" href="resources/bootswatch5/<?= "$theme" ?>/bootstrap.min.css">
|
||||
<!-- inject:login:css -->
|
||||
<link rel="stylesheet" href="css/login.min.css">
|
||||
<!-- endinject -->
|
||||
@@ -107,10 +107,11 @@
|
||||
|
||||
<footer class="d-flex justify-content-center flex-shrink-0 text-center">
|
||||
<div class="footer container-fluid bg-body rounded shadow p-3 mb-md-4 mx-md-3">
|
||||
<span class="text-body-secondary">
|
||||
<svg height="1em" role="img" viewBox="0 0 229.85 143.05001" xmlns="http://www.w3.org/2000/svg">
|
||||
<title><?= lang('Common.software_short') . ' ' . lang('Common.logo_mark') ?></title>
|
||||
<path fill="currentColor" d="M115.51 50.18c-.03-1.26-.03-3.29.19-4.29 4.6-11.1 15.57-18.82 28.3-18.82h.41v58.3c0 .12-.03.78-.04.9-.54 16.46-14.01 29.7-30.59 29.7v27.08c21 0 39.17-11.27 49.29-28.07l.07-.11c2.9.45 5.86.75 8.9.75 31.95 0 57.81-26 57.81-57.81 0-30.87-24.37-56.46-55.1-57.81h-30.74c-17.18 0-32.61 7.64-43.22 19.63C90.2 7.71 74.93.04 57.77.04 25.91.04 0 25.95 0 57.81c0 31.86 25.91 57.77 57.77 57.77 31.86 0 57.77-25.91 57.77-57.77v-3.68c-.01.01-.02-3.31-.03-3.95zM57.76 88.51c-16.92 0-30.69-13.77-30.69-30.69s13.77-30.69 30.69-30.69S88.45 40.9 88.45 57.82 74.68 88.51 57.76 88.51zm142.96-19.87c-4.33 11.64-15.57 19.9-28.7 19.9h-.54V27.07h.54c13.13 0 24.37 8.26 28.7 19.9 1.35 3.25 2.03 6.91 2.03 10.83s-.67 7.59-2.03 10.84z"/>
|
||||
<span class="text-primary">
|
||||
<svg height="1.25em" role="img" viewBox="0 0 308.57998 308.57997" xmlns="http://www.w3.org/2000/svg">
|
||||
<title><?= lang('Common.software_title') . ' ' . lang('Common.logo') ?></title>
|
||||
<circle cx="154.28999" cy="154.28999" r="154.28999" fill="currentColor"/>
|
||||
<path fill="#fff" d="M154.88998 145.66999c-.03-1.26-.03-3.29.19-4.29 4.6-11.1 15.57-18.82 28.3-18.82h.41v58.3c0 .12-.03.78-.04.9-.54 16.46-14.01 29.7-30.59 29.7v27.08c21 0 39.17-11.27 49.29-28.07l.07-.11c2.9.45 5.86.75 8.9.75 31.95 0 57.81-26 57.81-57.81 0-30.87-24.37-56.46-55.1-57.81h-30.74c-17.18 0-32.61 7.64-43.22 19.63-10.59-11.92-25.86-19.59-43.02-19.59-31.86 0-57.77 25.91-57.77 57.77 0 31.86 25.91 57.77 57.77 57.77 31.86 0 57.77-25.91 57.77-57.77v-3.68c-.01.01-.02-3.31-.03-3.95zm-57.75 38.33c-16.92 0-30.69-13.77-30.69-30.69s13.77-30.69 30.69-30.69 30.69 13.77 30.69 30.69-13.77 30.69-30.69 30.69zm142.96-19.87c-4.33 11.64-15.57 19.9-28.7 19.9h-.54v-61.47h.54c13.13 0 24.37 8.26 28.7 19.9 1.35 3.25 2.03 6.91 2.03 10.83s-.67 7.59-2.03 10.84z"/>
|
||||
</svg>
|
||||
</span>
|
||||
<span><?= lang('Common.software_title') ?></span>
|
||||
|
||||
@@ -56,7 +56,7 @@ $request = Services::request();
|
||||
|
||||
<div class="navbar-right" style="margin:0">
|
||||
<?= anchor("home/changePassword/$user_info->person_id", "$user_info->first_name $user_info->last_name", ['class' => 'modal-dlg', 'data-btn-submit' => lang('Common.submit'), 'title' => lang('Employees.change_password')]) ?>
|
||||
<?= ' | ' . ((ENVIRONMENT == 'development' || $request->getGet('debugdebug') == 'true') ? session('session_sha1') . ' | ' : '') ?>
|
||||
<span> | </span>
|
||||
<?= anchor('home/logout', lang('Login.logout')) ?>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -37,7 +37,9 @@
|
||||
if ($config['company_logo'] != '')
|
||||
{
|
||||
?>
|
||||
<div id="company_name"><img id="image" src="<?= esc(base_url('uploads/' . $config['company_logo']), 'url') ?>" alt="company_logo" /></div>
|
||||
<div id="company_name">
|
||||
<img id="image" src="<?= base_url('uploads/' . esc($config['company_logo'], 'url')) ?>" alt="company_logo" />
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -219,7 +219,7 @@ if (isset($success))
|
||||
{
|
||||
?>
|
||||
<td><?= $item['discount'] ?></td>
|
||||
<?= form_hidden('discount', $item['discount']) ?>
|
||||
<?= form_hidden('discount', (string)$item['discount']) ?>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -255,8 +255,7 @@ $(document).ready(function()
|
||||
<div id="sale_return_policy">
|
||||
<h5>
|
||||
<span><?= nl2br(esc($config['payment_message'])) ?></span>
|
||||
<span style='padding:4%;'><?= empty($comments) ? '' : lang('Sales.comments') . ': ' . esc($comments) ?></span>
|
||||
<span style='padding:4%;'><?= esc($config['invoice_default_comments']) ?></span>
|
||||
<span style='padding:4%;'><?= empty($comments) ? esc($config['invoice_default_comments']) : lang('Sales.comments') . ': ' . esc($comments) ?></span>
|
||||
</h5>
|
||||
<div style='padding:2%;'><?= nl2br(esc($config['return_policy'])) ?></div>
|
||||
</div>
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
*/
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="<?= $this->request->getLocale() ?>">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" type="text/css" href="<?= base_url('css/invoice_email.css') ?>"/>
|
||||
@@ -208,7 +207,7 @@ if(isset($error_message))
|
||||
<?= nl2br($config['return_policy']) ?>
|
||||
</div>
|
||||
<div id='barcode'>
|
||||
<img alt='<?= esc($barcode, 'attr') ?>' src='data:image/png;base64,<?= esc($barcode, 'attr') ?>' /><br>
|
||||
<img alt=<?='$sale_id'?> src='data:image/svg+xml;base64,<?= base64_encode($barcode) ?>' /><br>
|
||||
<?= $sale_id ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -24,7 +24,7 @@ if (isset($error_message))
|
||||
{
|
||||
var send_email = function()
|
||||
{
|
||||
$.get('<?= site_url() . esc("/sales/sendReceipt/$sale_id_num", 'url') ?>',
|
||||
$.get('<?= site_url() . esc("/sales/sendPdf/$sale_id_num/receipt") ?>',
|
||||
function(response)
|
||||
{
|
||||
$.notify( { message: response.message }, { type: response.success ? 'success' : 'danger'} )
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<td class="total-value"><?= to_currency($item['discounted_total']) ?></td>
|
||||
<td class="total-value" style="text-align:right;"><?= to_currency($item['discounted_total']) ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
@@ -170,10 +170,6 @@
|
||||
<td style="<?= $border ? 'border-top: 2px solid black;' : '' ?>text-align:right"><?= to_currency($total) ?></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4"> </td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
$only_sale_check = false;
|
||||
$show_giftcard_remainder = false;
|
||||
@@ -190,11 +186,7 @@
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<tr>
|
||||
<td colspan="4"> </td>
|
||||
</tr>
|
||||
|
||||
|
||||
<?php
|
||||
if(isset($cur_giftcard_value) && $show_giftcard_remainder)
|
||||
{
|
||||
@@ -216,14 +208,14 @@
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div id="sale_return_policy" style="text-align:center">
|
||||
<?= nl2br(esc($config['return_policy'])) ?>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div id="barcode" style="text-align:center">
|
||||
<?= $barcode ?><br>
|
||||
<?= $sale_id ?>
|
||||
<div id="terms">
|
||||
<div id="sale_return_policy" style="text-align:center">
|
||||
<?= nl2br(esc($config['return_policy'])) ?>
|
||||
</div>
|
||||
|
||||
<div id='barcode' style="text-align:center">
|
||||
<img alt=<?='$sale_id'?> src='data:image/svg+xml;base64,<?= base64_encode($barcode) ?>' /><br>
|
||||
<?= $sale_id ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -11,7 +11,7 @@ services:
|
||||
depends_on:
|
||||
- mysql
|
||||
ports:
|
||||
- "127.0.0.1:80:80"
|
||||
- "80:80"
|
||||
networks:
|
||||
- app_net
|
||||
volumes:
|
||||
|
||||
@@ -14,6 +14,7 @@ import header from 'gulp-header'
|
||||
import tar from 'gulp-tar'
|
||||
import gzip from 'gulp-gzip'
|
||||
import zip from 'gulp-zip'
|
||||
import run from 'gulp-run'
|
||||
|
||||
import { Stream } from 'readable-stream'
|
||||
const {finished, pipeline} = Stream.promises
|
||||
@@ -248,6 +249,13 @@ gulp.task('inject-login', function() {
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
gulp.task('update-licenses', function() {
|
||||
run('composer licenses --format=json --no-dev > public/license/composer.LICENSES').exec();
|
||||
return pipeline(gulp.src('LICENSE'),gulp.dest('public/license'));
|
||||
});
|
||||
|
||||
|
||||
gulp.task('build-database', function() {
|
||||
return gulp.src(['./app/Database/tables.sql','./app/Database/constraints.sql'])
|
||||
.pipe(header('-- >> This file is autogenerated from tables.sql and constraints.sql. Do not modify directly << --'))
|
||||
@@ -266,5 +274,6 @@ gulp.task('default',
|
||||
'prod-css',
|
||||
'copy-fonts',
|
||||
'inject-login',
|
||||
'update-licenses',
|
||||
'build-database'
|
||||
));
|
||||
|
||||
4506
package-lock.json
generated
4506
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
17
package.json
17
package.json
@@ -10,7 +10,9 @@
|
||||
"objecttothis <objecttothis - at - gmail.com>",
|
||||
"SteveIreland <stevei - at - ruledomain.com>"
|
||||
],
|
||||
"files": ["dist/opensourcepos.$version.tgz"],
|
||||
"files": [
|
||||
"dist/opensourcepos.$version.tgz"
|
||||
],
|
||||
"publishConfig": {
|
||||
"registry": "https://npm.pkg.github.com/"
|
||||
},
|
||||
@@ -19,8 +21,8 @@
|
||||
"POS"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/opensourcepos/opensourcepos"
|
||||
"type": "git",
|
||||
"url": "https://github.com/opensourcepos/opensourcepos"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "gulp default",
|
||||
@@ -49,9 +51,6 @@
|
||||
"coffeescript": "^2.7.0",
|
||||
"es6-promise": "^4.2.8",
|
||||
"file-saver": "^2.0.5",
|
||||
"gulp-gzip": "^1.4.2",
|
||||
"gulp-tar": "^4.0.0",
|
||||
"gulp-zip": "^6.0.0",
|
||||
"html2canvas": "^1.4.1",
|
||||
"jasny-bootstrap": "^3.1.3",
|
||||
"jquery": "^3.7.1",
|
||||
@@ -69,12 +68,16 @@
|
||||
"gulp-clean-css": "^4.3.0",
|
||||
"gulp-concat": "^2.6.1",
|
||||
"gulp-debug": "^5.0.1",
|
||||
"gulp-gzip": "^1.4.2",
|
||||
"gulp-header": "^2.0.9",
|
||||
"gulp-inject": "^5.0.5",
|
||||
"gulp-rename": "^2.0.0",
|
||||
"gulp-rev": "^10.0.0",
|
||||
"gulp-run": "^1.7.1",
|
||||
"gulp-tar": "^4.0.0",
|
||||
"gulp-uglify": "^3.0.2",
|
||||
"npm-check-updates": "^16.14.11",
|
||||
"gulp-zip": "^6.1.0",
|
||||
"npm-check-updates": "^17.1.14",
|
||||
"readable-stream": "^4.4.2",
|
||||
"stream-series": "^0.1.1"
|
||||
}
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2013-2022 jekkos
|
||||
Copyright (c) 2015-2021 FrancescoUK (aka daN4cat)
|
||||
Copyright (c) 2017-2021 Steve Ireland
|
||||
Copyright (c) 2017-2022 objecttothis
|
||||
Copyright (c) 2017-2021 odiea
|
||||
Copyright (c) 2017-2021 WebShells
|
||||
Copyright (c) 2020-2021 Andriux1990
|
||||
Copyright (c) 2021 BudsieBuds
|
||||
Copyright (c) 2013-2024 jekkos
|
||||
Copyright (c) 2017-2024 objecttothis
|
||||
Copyright (c) 2017-2024 Steve Ireland
|
||||
Copyright (c) 2017-2024 odiea
|
||||
Copyright (c) 2018-2024 WebShells
|
||||
Copyright (c) 2021-2024 BudsieBuds
|
||||
Copyright (c) 2015-2023 FrancescoUK (aka daN4cat)
|
||||
Copyright (c) 2015-2022 Aamir Shahzad (aka asakpke), RoshanTech, eSite.pk
|
||||
Copyright (c) 2019-2020 Andriux1990
|
||||
Copyright (c) 2018-2019 Erasto Marroquin (aka Erastus)
|
||||
Copyright (c) 2019 Loyd Jayme (aka loydjayme25)
|
||||
Copyright (c) 2018 Erasto Marroquin (aka Erastus)
|
||||
Copyright (c) 2018 Nathan Sas (aka nathanzky)
|
||||
Copyright (c) 2018 Emilio Silva (aka emi-silva)
|
||||
Copyright (c) 2017 Jesus Guerrero Botella (aka i92guboj)
|
||||
Copyright (c) 2016-2017 Ramkrishna Mondal (aka RamkrishnaMondal)
|
||||
Copyright (c) 2016-2017 Jorge Colmenarez (aka jlctmaster), frontuari.com
|
||||
Copyright (c) 2016-2017 Jesus Guerrero Botella (aka i92guboj)
|
||||
Copyright (c) 2017 Deep Shah (aka deepshah)
|
||||
Copyright (c) 2017 Joshua Fernandez (aka joshua1234511)
|
||||
Copyright (c) 2017 asadjaved63
|
||||
Copyright (c) 2016-2017 Ramkrishna Mondal (aka RamkrishnaMondal)
|
||||
Copyright (c) 2016-2017 Jorge Colmenarez (aka jlctmaster), frontuari.com
|
||||
Copyright (c) 2016 Rinaldy@dbarber (aka rnld26)
|
||||
Copyright (c) 2015-2022 Aamir Shahzad (aka asakpke), RoshanTech, eSite.pk
|
||||
Copyright (c) 2015 Toni Haryanto (aka yllumi)
|
||||
Copyright (c) 2012-2014 pappastech
|
||||
Copyright (c) 2013 Rob Garrison
|
||||
Copyright (c) 2013 Parq
|
||||
Copyright (c) 2013 Ramel
|
||||
Copyright (c) 2012-2014 pappastech
|
||||
Copyright (c) 2012 Alain
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
@@ -34,16 +34,16 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
Additionally, you cannot claim copyright or ownership of the Software.
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2011-2021 Twitter, Inc.
|
||||
Copyright (c) 2011-2021 The Bootstrap Authors
|
||||
Copyright (c) 2011-2024 The Bootstrap Authors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1 +1 @@
|
||||
Bootstrap 5.0.1
|
||||
Bootstrap 5.3.3
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2019-2020 The Bootstrap Authors
|
||||
Copyright (c) 2019-2024 The Bootstrap Authors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1 +1 @@
|
||||
Bootstrap Icons 1.5.0
|
||||
Bootstrap Icons 1.11.3
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2013 Thomas Park
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -1 +0,0 @@
|
||||
Bootswatch 5.0.1
|
||||
@@ -1 +1 @@
|
||||
Bootswatch 3.4.1+1
|
||||
Bootswatch 3.4.1+1 & 5.3.3
|
||||
|
||||
@@ -1,63 +1,87 @@
|
||||
{
|
||||
"name": "OpenSourcePOS",
|
||||
"version": "3.4.0",
|
||||
"name": "opensourcepos/opensourcepos",
|
||||
"version": "dev-master",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"dependencies": {
|
||||
"codeigniter/framework": {
|
||||
"version": "4.1.3",
|
||||
"codeigniter4/framework": {
|
||||
"version": "v4.5.5",
|
||||
"license": [
|
||||
"MIT"
|
||||
]
|
||||
},
|
||||
"dompdf/dompdf": {
|
||||
"version": "v0.8.6",
|
||||
"version": "v2.0.4",
|
||||
"license": [
|
||||
"LGPL-2.1"
|
||||
]
|
||||
},
|
||||
"ezyang/htmlpurifier": {
|
||||
"version": "v4.17.0",
|
||||
"license": [
|
||||
"LGPL-2.1-or-later"
|
||||
]
|
||||
},
|
||||
"mikey179/vfsStream": {
|
||||
"version": "v1.1.0",
|
||||
"laminas/laminas-escaper": {
|
||||
"version": "2.13.0",
|
||||
"license": [
|
||||
"BSD"
|
||||
"BSD-3-Clause"
|
||||
]
|
||||
},
|
||||
"masterminds/html5": {
|
||||
"version": "2.8.1",
|
||||
"license": [
|
||||
"MIT"
|
||||
]
|
||||
},
|
||||
"paragonie/random_compat": {
|
||||
"version": "2.0.19",
|
||||
"version": "v2.0.21",
|
||||
"license": [
|
||||
"MIT"
|
||||
]
|
||||
},
|
||||
"phenx/php-font-lib": {
|
||||
"version": "0.5.2",
|
||||
"version": "0.5.6",
|
||||
"license": [
|
||||
"LGPL-3.0-or-later"
|
||||
"LGPL-2.1-or-later"
|
||||
]
|
||||
},
|
||||
"phenx/php-svg-lib": {
|
||||
"version": "0.3.3",
|
||||
"version": "0.5.2",
|
||||
"license": [
|
||||
"LGPL-3.0"
|
||||
]
|
||||
},
|
||||
"picqer/php-barcode-generator": {
|
||||
"version": "v2.4.0",
|
||||
"license": [
|
||||
"LGPL-3.0-or-later"
|
||||
]
|
||||
},
|
||||
"tamtamchik/namecase": {
|
||||
"version": "1.0.6",
|
||||
"sabberworm/php-css-parser": {
|
||||
"version": "v8.5.1",
|
||||
"license": [
|
||||
"MIT"
|
||||
]
|
||||
},
|
||||
"vlucas/phpdotenv": {
|
||||
"version": "2.6.6",
|
||||
"symfony/polyfill-ctype": {
|
||||
"version": "v1.31.0",
|
||||
"license": [
|
||||
"BSD-3-Clause-Attribution"
|
||||
"MIT"
|
||||
]
|
||||
},
|
||||
"symfony/polyfill-ctype": {
|
||||
"version": "v1.20.0",
|
||||
"license": [
|
||||
"MIT"
|
||||
]
|
||||
"symfony/polyfill-mbstring": {
|
||||
"version": "v1.31.0",
|
||||
"license": [
|
||||
"MIT"
|
||||
]
|
||||
},
|
||||
"tamtamchik/namecase": {
|
||||
"version": "3.0.0",
|
||||
"license": [
|
||||
"MIT"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user