mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-11 21:52:35 +01:00
commit
9958395d99
@ -1 +1 @@
|
|||||||
5.3.73
|
5.3.74
|
@ -54,7 +54,7 @@ class PostUpdate extends Command
|
|||||||
|
|
||||||
$output = [];
|
$output = [];
|
||||||
|
|
||||||
exec('vendor/bin/composer install --no-dev -o', $output);
|
// exec('vendor/bin/composer install --no-dev -o', $output);
|
||||||
|
|
||||||
info(print_r($output,1));
|
info(print_r($output,1));
|
||||||
info("finished running composer install ");
|
info("finished running composer install ");
|
||||||
|
@ -185,8 +185,7 @@ class EmailTemplateDefaults
|
|||||||
|
|
||||||
public static function emailReminder1Template()
|
public static function emailReminder1Template()
|
||||||
{
|
{
|
||||||
return self::emailInvoiceTemplate();
|
return self::emailInvoiceReminderTemplate();
|
||||||
//return '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function emailReminder2Subject()
|
public static function emailReminder2Subject()
|
||||||
@ -196,8 +195,7 @@ class EmailTemplateDefaults
|
|||||||
|
|
||||||
public static function emailReminder2Template()
|
public static function emailReminder2Template()
|
||||||
{
|
{
|
||||||
return self::emailInvoiceTemplate();
|
return self::emailInvoiceReminderTemplate();
|
||||||
//return '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function emailReminder3Subject()
|
public static function emailReminder3Subject()
|
||||||
@ -207,8 +205,7 @@ class EmailTemplateDefaults
|
|||||||
|
|
||||||
public static function emailReminder3Template()
|
public static function emailReminder3Template()
|
||||||
{
|
{
|
||||||
return self::emailInvoiceTemplate();
|
return self::emailInvoiceReminderTemplate();
|
||||||
//return '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function emailReminderEndlessSubject()
|
public static function emailReminderEndlessSubject()
|
||||||
@ -218,8 +215,7 @@ class EmailTemplateDefaults
|
|||||||
|
|
||||||
public static function emailReminderEndlessTemplate()
|
public static function emailReminderEndlessTemplate()
|
||||||
{
|
{
|
||||||
return self::emailInvoiceTemplate();
|
return self::emailInvoiceReminderTemplate();
|
||||||
return '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function emailStatementSubject()
|
public static function emailStatementSubject()
|
||||||
|
@ -15,6 +15,7 @@ use App\Exceptions\FilePermissionsFailure;
|
|||||||
use App\Utils\Ninja;
|
use App\Utils\Ninja;
|
||||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||||
use Illuminate\Support\Facades\Artisan;
|
use Illuminate\Support\Facades\Artisan;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
|
||||||
class SelfUpdateController extends BaseController
|
class SelfUpdateController extends BaseController
|
||||||
{
|
{
|
||||||
@ -53,8 +54,43 @@ class SelfUpdateController extends BaseController
|
|||||||
* ),
|
* ),
|
||||||
* )
|
* )
|
||||||
*/
|
*/
|
||||||
public function update(\Codedge\Updater\UpdaterManager $updater)
|
// public function old_update(\Codedge\Updater\UpdaterManager $updater)
|
||||||
|
// {
|
||||||
|
// set_time_limit(0);
|
||||||
|
// define('STDIN', fopen('php://stdin', 'r'));
|
||||||
|
|
||||||
|
// if (Ninja::isHosted()) {
|
||||||
|
// return response()->json(['message' => ctrans('texts.self_update_not_available')], 403);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// $this->testWritable();
|
||||||
|
|
||||||
|
// // Get the new version available
|
||||||
|
// $versionAvailable = $updater->source()->getVersionAvailable();
|
||||||
|
|
||||||
|
// // Create a release
|
||||||
|
// $release = $updater->source()->fetch($versionAvailable);
|
||||||
|
|
||||||
|
// $updater->source()->update($release);
|
||||||
|
|
||||||
|
|
||||||
|
// $cacheCompiled = base_path('bootstrap/cache/compiled.php');
|
||||||
|
// if (file_exists($cacheCompiled)) { unlink ($cacheCompiled); }
|
||||||
|
// $cacheServices = base_path('bootstrap/cache/services.php');
|
||||||
|
// if (file_exists($cacheServices)) { unlink ($cacheServices); }
|
||||||
|
|
||||||
|
// Artisan::call('clear-compiled');
|
||||||
|
// Artisan::call('route:clear');
|
||||||
|
// Artisan::call('view:clear');
|
||||||
|
// Artisan::call('optimize');
|
||||||
|
|
||||||
|
// return response()->json(['message' => 'Update completed'], 200);
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
public function update()
|
||||||
{
|
{
|
||||||
|
|
||||||
set_time_limit(0);
|
set_time_limit(0);
|
||||||
define('STDIN', fopen('php://stdin', 'r'));
|
define('STDIN', fopen('php://stdin', 'r'));
|
||||||
|
|
||||||
@ -64,15 +100,22 @@ class SelfUpdateController extends BaseController
|
|||||||
|
|
||||||
$this->testWritable();
|
$this->testWritable();
|
||||||
|
|
||||||
// Get the new version available
|
$contents = file_get_contents($this->getDownloadUrl());
|
||||||
$versionAvailable = $updater->source()->getVersionAvailable();
|
|
||||||
|
|
||||||
// Create a release
|
Storage::disk('local')->put('invoiceninja.zip', $contents);
|
||||||
$release = $updater->source()->fetch($versionAvailable);
|
|
||||||
|
|
||||||
$updater->source()->update($release);
|
$file = Storage::disk('local')->path('invoiceninja.zip');
|
||||||
|
|
||||||
|
$zipFile = new \PhpZip\ZipFile();
|
||||||
|
|
||||||
|
$zipFile->openFile($file);
|
||||||
|
|
||||||
|
$zipFile->extractTo(base_path());
|
||||||
|
|
||||||
|
$zipFile->close();
|
||||||
|
|
||||||
|
unlink($file);
|
||||||
|
|
||||||
|
|
||||||
$cacheCompiled = base_path('bootstrap/cache/compiled.php');
|
$cacheCompiled = base_path('bootstrap/cache/compiled.php');
|
||||||
if (file_exists($cacheCompiled)) { unlink ($cacheCompiled); }
|
if (file_exists($cacheCompiled)) { unlink ($cacheCompiled); }
|
||||||
$cacheServices = base_path('bootstrap/cache/services.php');
|
$cacheServices = base_path('bootstrap/cache/services.php');
|
||||||
@ -81,10 +124,12 @@ class SelfUpdateController extends BaseController
|
|||||||
Artisan::call('clear-compiled');
|
Artisan::call('clear-compiled');
|
||||||
Artisan::call('route:clear');
|
Artisan::call('route:clear');
|
||||||
Artisan::call('view:clear');
|
Artisan::call('view:clear');
|
||||||
|
Artisan::call('migrate', ['--force' => true]);
|
||||||
Artisan::call('optimize');
|
Artisan::call('optimize');
|
||||||
|
|
||||||
return response()->json(['message' => 'Update completed'], 200);
|
return response()->json(['message' => 'Update completed'], 200);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function testWritable()
|
private function testWritable()
|
||||||
@ -113,4 +158,11 @@ class SelfUpdateController extends BaseController
|
|||||||
{
|
{
|
||||||
return trim(file_get_contents(config('ninja.version_url')));
|
return trim(file_get_contents(config('ninja.version_url')));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getDownloadUrl()
|
||||||
|
{
|
||||||
|
$version = $this->checkVersion();
|
||||||
|
|
||||||
|
return "https://github.com/invoiceninja/invoiceninja/releases/download/v{$version}/invoiceninja.zip";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -149,6 +149,63 @@ class CompanyImport implements ShouldQueue
|
|||||||
'system_logs',
|
'system_logs',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
private $company_properties = [
|
||||||
|
"convert_products",
|
||||||
|
"fill_products",
|
||||||
|
"update_products",
|
||||||
|
"show_product_details",
|
||||||
|
"client_can_register",
|
||||||
|
"custom_surcharge_taxes1",
|
||||||
|
"custom_surcharge_taxes2",
|
||||||
|
"custom_surcharge_taxes3",
|
||||||
|
"custom_surcharge_taxes4",
|
||||||
|
"show_product_cost",
|
||||||
|
"enabled_tax_rates",
|
||||||
|
"enabled_modules",
|
||||||
|
"enable_product_cost",
|
||||||
|
"enable_product_quantity",
|
||||||
|
"default_quantity",
|
||||||
|
"subdomain",
|
||||||
|
"size_id",
|
||||||
|
"first_day_of_week",
|
||||||
|
"first_month_of_year",
|
||||||
|
"portal_mode",
|
||||||
|
"portal_domain",
|
||||||
|
"enable_modules",
|
||||||
|
"custom_fields",
|
||||||
|
"industry_id",
|
||||||
|
"slack_webhook_url",
|
||||||
|
"google_analytics_key",
|
||||||
|
"created_at",
|
||||||
|
"updated_at",
|
||||||
|
"enabled_item_tax_rates",
|
||||||
|
"is_large",
|
||||||
|
"enable_shop_api",
|
||||||
|
"default_auto_bill",
|
||||||
|
"mark_expenses_invoiceable",
|
||||||
|
"mark_expenses_paid",
|
||||||
|
"invoice_expense_documents",
|
||||||
|
"auto_start_tasks",
|
||||||
|
"invoice_task_timelog",
|
||||||
|
"invoice_task_documents",
|
||||||
|
"show_tasks_table",
|
||||||
|
"is_disabled",
|
||||||
|
"default_task_is_date_based",
|
||||||
|
"enable_product_discount",
|
||||||
|
"calculate_expense_tax_by_amount",
|
||||||
|
"expense_inclusive_taxes",
|
||||||
|
"session_timeout",
|
||||||
|
"oauth_password_required",
|
||||||
|
"invoice_task_datelog",
|
||||||
|
"default_password_timeout",
|
||||||
|
"show_task_end_date",
|
||||||
|
"markdown_enabled",
|
||||||
|
"use_comma_as_decimal_place",
|
||||||
|
"report_include_drafts",
|
||||||
|
"client_registration_fields",
|
||||||
|
"convert_rate_to_client",
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new job instance.
|
* Create a new job instance.
|
||||||
*
|
*
|
||||||
@ -212,6 +269,7 @@ class CompanyImport implements ShouldQueue
|
|||||||
|
|
||||||
$this->preFlightChecks()
|
$this->preFlightChecks()
|
||||||
->purgeCompanyData()
|
->purgeCompanyData()
|
||||||
|
->importCompany()
|
||||||
->importData()
|
->importData()
|
||||||
->postImportCleanup();
|
->postImportCleanup();
|
||||||
|
|
||||||
@ -420,17 +478,24 @@ class CompanyImport implements ShouldQueue
|
|||||||
private function importCompany()
|
private function importCompany()
|
||||||
{
|
{
|
||||||
//$tmp_company = $this->backup_file->company;
|
//$tmp_company = $this->backup_file->company;
|
||||||
$tmp_company = (object)$this->getObject("company");
|
$tmp_company = (object)$this->getObject("company",true);
|
||||||
$tmp_company->company_key = $this->createHash();
|
$tmp_company->company_key = $this->createHash();
|
||||||
$tmp_company->db = config('database.default');
|
$tmp_company->db = config('database.default');
|
||||||
$tmp_company->account_id = $this->account->id;
|
$tmp_company->account_id = $this->account->id;
|
||||||
|
|
||||||
|
nlog($tmp_company);
|
||||||
|
|
||||||
if(Ninja::isHosted())
|
if(Ninja::isHosted())
|
||||||
$tmp_company->subdomain = MultiDB::randomSubdomainGenerator();
|
$tmp_company->subdomain = MultiDB::randomSubdomainGenerator();
|
||||||
else
|
else
|
||||||
$tmp_company->subdomain = '';
|
$tmp_company->subdomain = '';
|
||||||
|
|
||||||
$this->company = $tmp_company;
|
foreach($this->company_properties as $value){
|
||||||
|
|
||||||
|
$this->company->{$value} = $tmp_company->{$value};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
$this->company->save();
|
$this->company->save();
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
|
@ -55,6 +55,11 @@ class UpdateInvoicePayment
|
|||||||
$paid_amount = $paid_invoice->amount;
|
$paid_amount = $paid_invoice->amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$client
|
||||||
|
->service()
|
||||||
|
->updatePaidToDate($paid_amount)
|
||||||
|
->save();
|
||||||
|
|
||||||
/* Need to determine here is we have an OVER payment - if YES only apply the max invoice amount */
|
/* Need to determine here is we have an OVER payment - if YES only apply the max invoice amount */
|
||||||
if($paid_amount > $invoice->partial && $paid_amount > $invoice->balance)
|
if($paid_amount > $invoice->partial && $paid_amount > $invoice->balance)
|
||||||
$paid_amount = $invoice->balance;
|
$paid_amount = $invoice->balance;
|
||||||
@ -77,7 +82,6 @@ class UpdateInvoicePayment
|
|||||||
$client
|
$client
|
||||||
->service()
|
->service()
|
||||||
->updateBalance($paid_amount * -1)
|
->updateBalance($paid_amount * -1)
|
||||||
->updatePaidToDate($paid_amount)
|
|
||||||
->save();
|
->save();
|
||||||
|
|
||||||
$pivot_invoice = $this->payment->invoices->first(function ($inv) use ($paid_invoice) {
|
$pivot_invoice = $this->payment->invoices->first(function ($inv) use ($paid_invoice) {
|
||||||
|
@ -40,8 +40,6 @@
|
|||||||
"checkout/checkout-sdk-php": "^1.0",
|
"checkout/checkout-sdk-php": "^1.0",
|
||||||
"cleverit/ubl_invoice": "^1.3",
|
"cleverit/ubl_invoice": "^1.3",
|
||||||
"coconutcraig/laravel-postmark": "^2.10",
|
"coconutcraig/laravel-postmark": "^2.10",
|
||||||
"codedge/laravel-selfupdater": "^3.2",
|
|
||||||
"composer/composer": "^2",
|
|
||||||
"doctrine/dbal": "^3.0",
|
"doctrine/dbal": "^3.0",
|
||||||
"eway/eway-rapid-php": "^1.3",
|
"eway/eway-rapid-php": "^1.3",
|
||||||
"fakerphp/faker": "^1.14",
|
"fakerphp/faker": "^1.14",
|
||||||
@ -87,10 +85,9 @@
|
|||||||
"wildbit/swiftmailer-postmark": "^3.3"
|
"wildbit/swiftmailer-postmark": "^3.3"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"php": "^7.3|^7.4|^8.0",
|
"php": "^7.4|^8.0",
|
||||||
"anahkiasen/former": "^4.2",
|
"anahkiasen/former": "^4.2",
|
||||||
"barryvdh/laravel-debugbar": "^3.4",
|
"barryvdh/laravel-debugbar": "^3.4",
|
||||||
"beyondcode/laravel-query-detector": "^1.5",
|
|
||||||
"brianium/paratest": "^6.1",
|
"brianium/paratest": "^6.1",
|
||||||
"darkaonline/l5-swagger": "^8.0",
|
"darkaonline/l5-swagger": "^8.0",
|
||||||
"facade/ignition": "^2.3.6",
|
"facade/ignition": "^2.3.6",
|
||||||
|
@ -14,8 +14,8 @@ return [
|
|||||||
'require_https' => env('REQUIRE_HTTPS', true),
|
'require_https' => env('REQUIRE_HTTPS', true),
|
||||||
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
||||||
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
|
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
|
||||||
'app_version' => '5.3.73',
|
'app_version' => '5.3.74',
|
||||||
'app_tag' => '5.3.73',
|
'app_tag' => '5.3.74',
|
||||||
'minimum_client_version' => '5.0.16',
|
'minimum_client_version' => '5.0.16',
|
||||||
'terms_version' => '1.0.1',
|
'terms_version' => '1.0.1',
|
||||||
'api_secret' => env('API_SECRET', ''),
|
'api_secret' => env('API_SECRET', ''),
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
@page {
|
@page {
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
|
size: $page_size $page_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
@ -159,7 +160,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#table-totals {
|
#table-totals {
|
||||||
margin-top: 1rem;
|
margin-top: 0rem;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 2fr 1fr;
|
grid-template-columns: 2fr 1fr;
|
||||||
padding-top: .5rem;
|
padding-top: .5rem;
|
||||||
|
@ -7,6 +7,11 @@
|
|||||||
--line-height: 1.6;
|
--line-height: 1.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
width: 210mm;
|
||||||
|
height: 200mm;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
@ -20,6 +25,7 @@
|
|||||||
margin-right: $global_margin;
|
margin-right: $global_margin;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
|
size: $page_size $page_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
@ -56,7 +62,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.entity-issued-to {
|
.entity-issued-to {
|
||||||
margin-top: 3rem;
|
margin-top: 2rem;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,7 +167,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#table-totals {
|
#table-totals {
|
||||||
margin-top: 1rem;
|
margin-top: 0.5rem;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 2fr 1fr;
|
grid-template-columns: 2fr 1fr;
|
||||||
gap: 80px;
|
gap: 80px;
|
||||||
@ -253,7 +259,7 @@
|
|||||||
.repeating-header-space, **/
|
.repeating-header-space, **/
|
||||||
.repeating-footer,
|
.repeating-footer,
|
||||||
.repeating-footer-space {
|
.repeating-footer-space {
|
||||||
height: 160px;
|
height: 10px;
|
||||||
}
|
}
|
||||||
.repeating-header {
|
.repeating-header {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -7,6 +7,11 @@
|
|||||||
--line-height: 1.6;
|
--line-height: 1.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
width: 210mm;
|
||||||
|
height: 200mm;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
@ -20,8 +25,10 @@
|
|||||||
margin-right: $global_margin;
|
margin-right: $global_margin;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
|
size: $page_size $page_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
p {
|
p {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@ -119,7 +126,7 @@
|
|||||||
[data-ref="table"] > tbody > tr > td {
|
[data-ref="table"] > tbody > tr > td {
|
||||||
border-top: 1px solid #d8d8d8;
|
border-top: 1px solid #d8d8d8;
|
||||||
border-bottom: 1px solid #d8d8d8;
|
border-bottom: 1px solid #d8d8d8;
|
||||||
padding: 1.5rem 1rem;
|
padding: 1rem 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
[data-ref="table"] > tbody > tr > td:first-child {
|
[data-ref="table"] > tbody > tr > td:first-child {
|
||||||
@ -191,7 +198,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#footer {
|
#footer {
|
||||||
margin-top: 30px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Markdown-specific styles. **/
|
/** Markdown-specific styles. **/
|
||||||
@ -222,7 +229,7 @@
|
|||||||
.repeating-header-space, **/
|
.repeating-header-space, **/
|
||||||
.repeating-footer,
|
.repeating-footer,
|
||||||
.repeating-footer-space {
|
.repeating-footer-space {
|
||||||
height: 160px;
|
height: 10px;
|
||||||
}
|
}
|
||||||
.repeating-header {
|
.repeating-header {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -7,6 +7,11 @@
|
|||||||
--line-height: 1.6;
|
--line-height: 1.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
width: 210mm;
|
||||||
|
height: 200mm;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
@ -20,6 +25,7 @@
|
|||||||
margin-right: $global_margin;
|
margin-right: $global_margin;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
|
size: $page_size $page_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
@ -206,7 +212,7 @@
|
|||||||
.repeating-header-space, **/
|
.repeating-header-space, **/
|
||||||
.repeating-footer,
|
.repeating-footer,
|
||||||
.repeating-footer-space {
|
.repeating-footer-space {
|
||||||
height: 160px;
|
height: 10px;
|
||||||
}
|
}
|
||||||
.repeating-header {
|
.repeating-header {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -7,6 +7,11 @@
|
|||||||
--line-height: 1.6;
|
--line-height: 1.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
width: 210mm;
|
||||||
|
height: 200mm;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
@ -17,6 +22,7 @@
|
|||||||
|
|
||||||
@page {
|
@page {
|
||||||
margin: $global_margin;
|
margin: $global_margin;
|
||||||
|
size: $page_size $page_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
@ -211,7 +217,7 @@
|
|||||||
.repeating-header-space, **/
|
.repeating-header-space, **/
|
||||||
.repeating-footer,
|
.repeating-footer,
|
||||||
.repeating-footer-space {
|
.repeating-footer-space {
|
||||||
height: 160px;
|
height: 10px;
|
||||||
}
|
}
|
||||||
.repeating-header {
|
.repeating-header {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -7,6 +7,11 @@
|
|||||||
--line-height: 1.6;
|
--line-height: 1.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
width: 210mm;
|
||||||
|
height: 200mm;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
@ -17,6 +22,7 @@
|
|||||||
|
|
||||||
@page {
|
@page {
|
||||||
margin: $global_margin;
|
margin: $global_margin;
|
||||||
|
size: $page_size $page_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
@ -100,7 +106,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
[data-ref="table"] {
|
[data-ref="table"] {
|
||||||
margin-top: 3rem;
|
margin-top: 1rem;
|
||||||
/* margin-bottom: 200px; */
|
/* margin-bottom: 200px; */
|
||||||
min-width: 100%;
|
min-width: 100%;
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
|
@ -6,6 +6,11 @@
|
|||||||
--secondary-color: $secondary_color;
|
--secondary-color: $secondary_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
width: 210mm;
|
||||||
|
height: 200mm;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
@ -21,6 +26,7 @@
|
|||||||
|
|
||||||
@page {
|
@page {
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
|
size: $page_size $page_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
|
@ -15,13 +15,17 @@
|
|||||||
zoom: 80%;
|
zoom: 80%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
width: 210mm;
|
||||||
|
height: 200mm;
|
||||||
|
}
|
||||||
|
|
||||||
@page {
|
@page {
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
margin-left: $global_margin;
|
margin-left: $global_margin;
|
||||||
margin-right: $global_margin;
|
margin-right: $global_margin;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
|
size: $page_size $page_layout;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,7 +204,7 @@
|
|||||||
.repeating-header-space, **/
|
.repeating-header-space, **/
|
||||||
.repeating-footer,
|
.repeating-footer,
|
||||||
.repeating-footer-space {
|
.repeating-footer-space {
|
||||||
height: 100px;
|
height: 10px;
|
||||||
}
|
}
|
||||||
.repeating-header {
|
.repeating-header {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -15,10 +15,18 @@
|
|||||||
zoom: 80%;
|
zoom: 80%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
width: 210mm;
|
||||||
|
height: 200mm;
|
||||||
|
}
|
||||||
|
|
||||||
@page {
|
@page {
|
||||||
margin: -0.25cm !important;
|
margin: -0.25cm !important;
|
||||||
|
size: $page_size $page_layout;
|
||||||
|
margin-top: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
p {
|
p {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@ -28,12 +36,12 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
gap: 20px;
|
gap: 20px;
|
||||||
padding: 2rem 3rem;
|
padding: 1rem 0rem 0rem 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-wrapper .entity-details-wrapper {
|
.header-wrapper .entity-details-wrapper {
|
||||||
background-color: var(--primary-color);
|
background-color: var(--primary-color);
|
||||||
padding: 1rem;
|
padding: 0.5rem;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,7 +69,7 @@
|
|||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
gap: 40px;
|
gap: 40px;
|
||||||
padding: 3rem;
|
padding: 1rem 0rem 0rem 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contacts-wrapper .contact-label {
|
.contacts-wrapper .contact-label {
|
||||||
@ -75,7 +83,7 @@
|
|||||||
.contacts-wrapper #client-details {
|
.contacts-wrapper #client-details {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contacts-wrapper .company-info {
|
.contacts-wrapper .company-info {
|
||||||
@ -99,8 +107,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
[data-ref="table"] {
|
[data-ref="table"] {
|
||||||
padding-left: 3rem;
|
padding-left: 2rem;
|
||||||
padding-right: 3rem;
|
padding-right: 0rem;
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
/* margin-bottom: 200px; */
|
/* margin-bottom: 200px; */
|
||||||
min-width: 100%;
|
min-width: 100%;
|
||||||
@ -154,13 +162,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#table-totals {
|
#table-totals {
|
||||||
margin-top: 1rem;
|
margin-top: 0.5rem;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 2fr 1fr;
|
grid-template-columns: 2fr 1fr;
|
||||||
gap: 80px;
|
gap: 80px;
|
||||||
padding-left: 3rem;
|
padding-left: 2rem;
|
||||||
padding-right: 3rem;
|
padding-right: 0rem;
|
||||||
margin-right: .75rem;
|
|
||||||
page-break-inside:auto;
|
page-break-inside:auto;
|
||||||
overflow: visible !important;
|
overflow: visible !important;
|
||||||
}
|
}
|
||||||
@ -220,12 +227,14 @@
|
|||||||
|
|
||||||
[data-ref="total_table-footer"] {
|
[data-ref="total_table-footer"] {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding-left: 3rem;
|
padding-left: 2rem;
|
||||||
padding-right: 3rem;
|
padding-right: rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#footer {
|
#footer {
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
|
page-break-inside:auto;
|
||||||
|
overflow: visible !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Markdown-specific styles. **/
|
/** Markdown-specific styles. **/
|
||||||
@ -260,12 +269,15 @@
|
|||||||
|
|
||||||
.repeating-header,
|
.repeating-header,
|
||||||
.repeating-header-space {
|
.repeating-header-space {
|
||||||
height: 50px;
|
height: 20px;
|
||||||
|
page-break-inside:avoid;
|
||||||
|
page-break-before:avoid;
|
||||||
|
page-break-after:avoid;
|
||||||
}
|
}
|
||||||
|
|
||||||
.repeating-footer,
|
.repeating-footer,
|
||||||
.repeating-footer-space {
|
.repeating-footer-space {
|
||||||
height: 160px;
|
height: 20px;
|
||||||
}
|
}
|
||||||
.repeating-header {
|
.repeating-header {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
@ -377,7 +389,7 @@
|
|||||||
|
|
||||||
$entity_images
|
$entity_images
|
||||||
|
|
||||||
<div class="repeating-footer" id="footer">
|
<div class="repeating-footerx" id="footer">
|
||||||
<p data-ref="total_table-footer">$entity_footer</p>
|
<p data-ref="total_table-footer">$entity_footer</p>
|
||||||
|
|
||||||
<div id="footer-colors">
|
<div id="footer-colors">
|
||||||
|
@ -6,6 +6,11 @@
|
|||||||
--secondary-color: $secondary_color;
|
--secondary-color: $secondary_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
width: 210mm;
|
||||||
|
height: 200mm;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
@ -17,6 +22,7 @@
|
|||||||
|
|
||||||
@page {
|
@page {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
size: $page_size $page_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media print {
|
@media print {
|
||||||
@ -235,7 +241,7 @@
|
|||||||
.repeating-header-space, **/
|
.repeating-header-space, **/
|
||||||
.repeating-footer,
|
.repeating-footer,
|
||||||
.repeating-footer-space {
|
.repeating-footer-space {
|
||||||
height: 160px;
|
height: 10px;
|
||||||
}
|
}
|
||||||
.repeating-header {
|
.repeating-header {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
Loading…
Reference in New Issue
Block a user