mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Merge branch 'v5-develop' of https://github.com/turbo124/invoiceninja into v5-develop
This commit is contained in:
commit
97d84795b5
@ -35,7 +35,7 @@ class NordigenController extends BaseController
|
||||
/** @var array $context */
|
||||
$context = $request->getTokenContent();
|
||||
$company = $request->getCompany();
|
||||
$lang = $company->locale();
|
||||
$lang = substr($company->locale(), 0, 2);
|
||||
$context["lang"] = $lang;
|
||||
|
||||
if (!$context) {
|
||||
@ -143,7 +143,7 @@ class NordigenController extends BaseController
|
||||
$data = $request->all();
|
||||
$company = $request->getCompany();
|
||||
$account = $company->account;
|
||||
$lang = $company->locale();
|
||||
$lang = substr($company->locale(), 0, 2);
|
||||
|
||||
/** @var array $context */
|
||||
$context = $request->getTokenContent();
|
||||
|
@ -29,6 +29,7 @@ use App\Utils\HostedPDF\NinjaPdf;
|
||||
use App\Utils\HtmlEngine;
|
||||
use App\Utils\Ninja;
|
||||
use App\Utils\PhantomJS\Phantom;
|
||||
use App\Utils\Traits\GeneratesCounter;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use App\Utils\Traits\MakesInvoiceHtml;
|
||||
use App\Utils\Traits\Pdf\PageNumbering;
|
||||
@ -40,6 +41,7 @@ use Twig\Error\SyntaxError;
|
||||
|
||||
class PreviewController extends BaseController
|
||||
{
|
||||
use GeneratesCounter;
|
||||
use MakesHash;
|
||||
use MakesInvoiceHtml;
|
||||
use PageNumbering;
|
||||
@ -404,23 +406,24 @@ class PreviewController extends BaseController
|
||||
|
||||
/** @var \App\Models\Client $client */
|
||||
$client = Client::factory()->create([
|
||||
'user_id' => auth()->user()->id,
|
||||
'user_id' => $user->id,
|
||||
'company_id' => $company->id,
|
||||
]);
|
||||
|
||||
/** @var \App\Models\ClientContact $contact */
|
||||
$contact = ClientContact::factory()->create([
|
||||
'user_id' => auth()->user()->id,
|
||||
'user_id' => $user->id,
|
||||
'company_id' => $company->id,
|
||||
'client_id' => $client->id,
|
||||
'is_primary' => 1,
|
||||
'send_email' => true,
|
||||
]);
|
||||
|
||||
/** @var \App\Models\Invoice $invoice */
|
||||
$settings = $company->settings;
|
||||
|
||||
/** @var \App\Models\Invoice $invoice */
|
||||
$invoice = Invoice::factory()->create([
|
||||
'user_id' => auth()->user()->id,
|
||||
'user_id' => $user->id,
|
||||
'company_id' => $company->id,
|
||||
'client_id' => $client->id,
|
||||
'terms' => $company->settings->invoice_terms,
|
||||
@ -428,8 +431,18 @@ class PreviewController extends BaseController
|
||||
'public_notes' => 'Sample Public Notes',
|
||||
]);
|
||||
|
||||
if ($settings->invoice_number_pattern) {
|
||||
$invoice->number = $this->getFormattedEntityNumber(
|
||||
$invoice,
|
||||
rand(1, 9999),
|
||||
$settings->counter_padding ?: 4,
|
||||
$settings->invoice_number_pattern,
|
||||
);
|
||||
$invoice->save();
|
||||
}
|
||||
|
||||
$invitation = InvoiceInvitation::factory()->create([
|
||||
'user_id' => auth()->user()->id,
|
||||
'user_id' => $user->id,
|
||||
'company_id' => $company->id,
|
||||
'invoice_id' => $invoice->id,
|
||||
'client_contact_id' => $contact->id,
|
||||
@ -454,7 +467,7 @@ class PreviewController extends BaseController
|
||||
'template' => $design->elements([
|
||||
'client' => $invoice->client,
|
||||
'entity' => $invoice,
|
||||
'pdf_variables' => (array) $invoice->company->settings->pdf_variables,
|
||||
'pdf_variables' => (array) $settings->pdf_variables,
|
||||
'products' => request()->design['design']['product'],
|
||||
]),
|
||||
'variables' => $html->generateLabelsAndValues(),
|
||||
|
@ -70,12 +70,10 @@ class StartupCheck
|
||||
private function buildTemplates($name = 'templates')
|
||||
{
|
||||
$data = [
|
||||
|
||||
'invoice' => [
|
||||
'subject' => EmailTemplateDefaults::emailInvoiceSubject(),
|
||||
'body' => EmailTemplateDefaults::emailInvoiceTemplate(),
|
||||
],
|
||||
|
||||
'quote' => [
|
||||
'subject' => EmailTemplateDefaults::emailQuoteSubject(),
|
||||
'body' => EmailTemplateDefaults::emailQuoteTemplate(),
|
||||
|
@ -20,6 +20,10 @@ use App\Utils\Traits\MakesHash;
|
||||
use App\PaymentDrivers\Common\MethodInterface;
|
||||
use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest;
|
||||
use App\Exceptions\PaymentFailed;
|
||||
use Illuminate\Mail\Mailables\Address;
|
||||
use App\Services\Email\EmailObject;
|
||||
use App\Services\Email\Email;
|
||||
use Illuminate\Support\Facades\App;
|
||||
|
||||
class BTCPay implements MethodInterface
|
||||
{
|
||||
@ -128,18 +132,55 @@ class BTCPay implements MethodInterface
|
||||
public function refund(Payment $payment, $amount)
|
||||
{
|
||||
try {
|
||||
$invoice = $payment->invoices()->first();
|
||||
$isPartialRefund = ($amount < $payment->amount);
|
||||
if ($amount == $payment->amount) {
|
||||
$refundVariant = "Fiat";
|
||||
$refundPaymentMethod = "BTC";
|
||||
$refundDescription = "Full refund";
|
||||
$refundCustomCurrency = null;
|
||||
$refundCustomAmount = null;
|
||||
} else {
|
||||
$refundVariant = "Custom";
|
||||
$refundPaymentMethod = "";
|
||||
$refundDescription = "Partial refund";
|
||||
$refundCustomCurrency = $payment->currency;
|
||||
$refundCustomAmount = $amount;
|
||||
}
|
||||
|
||||
$client = new \BTCPayServer\Client\Invoice($this->driver_class->btcpay_url, $this->driver_class->api_key);
|
||||
$refund = $client->refundInvoice($this->driver_class->store_id, $payment->transaction_reference);
|
||||
$refund = $client->refundInvoice(
|
||||
$this->driver_class->store_id,
|
||||
$payment->transaction_reference,
|
||||
$refundVariant,
|
||||
$refundPaymentMethod,
|
||||
null,
|
||||
$refundDescription,
|
||||
0,
|
||||
$refundCustomAmount,
|
||||
$refundCustomCurrency
|
||||
);
|
||||
App::setLocale($payment->company->getLocale());
|
||||
|
||||
/* $data = [];
|
||||
$data['InvoiceNumber'] = $invoice->number;
|
||||
$data['isPartialRefund'] = $isPartialRefund;
|
||||
$data['BTCPayLink'] = $refund->getViewLink();*/
|
||||
$mo = new EmailObject();
|
||||
$mo->subject = ctrans('texts.btcpay_refund_subject');
|
||||
$mo->body = ctrans('texts.btcpay_refund_body') . '<br>' . $refund->getViewLink();
|
||||
$mo->text_body = ctrans('texts.btcpay_refund_body') . '\n' . $refund->getViewLink();
|
||||
$mo->company_key = $payment->company->company_key;
|
||||
$mo->html_template = 'email.template.generic';
|
||||
$mo->to = [new Address($payment->client->present()->email(), $payment->client->present()->name())];
|
||||
$mo->email_template_body = 'btcpay_refund_subject';
|
||||
$mo->email_template_subject = 'btcpay_refund_body';
|
||||
|
||||
return $refund->getViewLink();
|
||||
Email::dispatch($mo, $payment->company);
|
||||
|
||||
$data = [
|
||||
'transaction_reference' => $refund->getId(),
|
||||
'transaction_response' => json_encode($refund),
|
||||
'success' => true,
|
||||
'description' => "Please follow this link to claim your refund: " . $refund->getViewLink(),
|
||||
'code' => 202,
|
||||
];
|
||||
|
||||
return $data;
|
||||
} catch (\Throwable $e) {
|
||||
throw new PaymentFailed('Error during BTCPay refund : ' . $e->getMessage());
|
||||
}
|
||||
|
@ -79,10 +79,14 @@ class BTCPayPaymentDriver extends BaseDriver
|
||||
return $this->payment_method->paymentView($data); //this is your custom implementation from here
|
||||
}
|
||||
|
||||
public function processPaymentResponse($request)
|
||||
{
|
||||
return $this->payment_method->paymentResponse($request);
|
||||
}
|
||||
|
||||
public function processWebhookRequest()
|
||||
{
|
||||
$webhook_payload = file_get_contents('php://input');
|
||||
//file_put_contents("/home/claude/invoiceninja/storage/my.log", $webhook_payload);
|
||||
|
||||
$btcpayRep = json_decode($webhook_payload);
|
||||
if ($btcpayRep == null) {
|
||||
|
100
app/Providers/StaticServiceProvider.php
Normal file
100
app/Providers/StaticServiceProvider.php
Normal file
@ -0,0 +1,100 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2024. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Models\Bank;
|
||||
use App\Models\Country;
|
||||
use App\Models\Currency;
|
||||
use App\Models\Industry;
|
||||
use App\Models\Language;
|
||||
use App\Models\PaymentTerm;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use App\DataMapper\EmailTemplateDefaults;
|
||||
|
||||
class StaticServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register services.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
|
||||
app()->singleton('currencies', function ($app) {
|
||||
return Currency::query()->orderBy('name')->get();
|
||||
});
|
||||
|
||||
app()->singleton('languages', function ($app) {
|
||||
return Language::query()->orderBy('name')->get();
|
||||
});
|
||||
|
||||
app()->singleton('countries', function ($app) {
|
||||
return Country::query()->orderBy('name')->get();
|
||||
});
|
||||
|
||||
app()->singleton('payment_types', function ($app) {
|
||||
return PaymentTerm::query()->orderBy('num_days')->get();
|
||||
});
|
||||
|
||||
app()->singleton('industries', function ($app) {
|
||||
return Industry::query()->orderBy('name')->get();
|
||||
});
|
||||
|
||||
app()->singleton('banks', function ($app){
|
||||
return Bank::query()->orderBy('name')->get();
|
||||
});
|
||||
|
||||
app()->singleton('templates', function ($app){
|
||||
return [
|
||||
'invoice' => [
|
||||
'subject' => EmailTemplateDefaults::emailInvoiceSubject(),
|
||||
'body' => EmailTemplateDefaults::emailInvoiceTemplate(),
|
||||
],
|
||||
'quote' => [
|
||||
'subject' => EmailTemplateDefaults::emailQuoteSubject(),
|
||||
'body' => EmailTemplateDefaults::emailQuoteTemplate(),
|
||||
],
|
||||
'payment' => [
|
||||
'subject' => EmailTemplateDefaults::emailPaymentSubject(),
|
||||
'body' => EmailTemplateDefaults::emailPaymentTemplate(),
|
||||
],
|
||||
'reminder1' => [
|
||||
'subject' => EmailTemplateDefaults::emailReminder1Subject(),
|
||||
'body' => EmailTemplateDefaults::emailReminder1Template(),
|
||||
],
|
||||
'reminder2' => [
|
||||
'subject' => EmailTemplateDefaults::emailReminder2Subject(),
|
||||
'body' => EmailTemplateDefaults::emailReminder2Template(),
|
||||
],
|
||||
'reminder3' => [
|
||||
'subject' => EmailTemplateDefaults::emailReminder3Subject(),
|
||||
'body' => EmailTemplateDefaults::emailReminder3Template(),
|
||||
],
|
||||
'reminder_endless' => [
|
||||
'subject' => EmailTemplateDefaults::emailReminderEndlessSubject(),
|
||||
'body' => EmailTemplateDefaults::emailReminderEndlessTemplate(),
|
||||
],
|
||||
'statement' => [
|
||||
'subject' => EmailTemplateDefaults::emailStatementSubject(),
|
||||
'body' => EmailTemplateDefaults::emailStatementTemplate(),
|
||||
],
|
||||
];
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
public function boot()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -27,11 +27,13 @@ use App\Models\PurchaseOrderInvitation;
|
||||
use App\Models\Quote;
|
||||
use App\Models\QuoteInvitation;
|
||||
use App\Models\Vendor;
|
||||
use App\Utils\Traits\GeneratesCounter;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
|
||||
class PdfMock
|
||||
{
|
||||
use MakesHash;
|
||||
use GeneratesCounter;
|
||||
|
||||
private mixed $mock;
|
||||
|
||||
@ -206,6 +208,20 @@ class PdfMock
|
||||
*/
|
||||
public function getStubVariables(): array
|
||||
{
|
||||
$entity_pattern = $this->entity_string.'_number_pattern';
|
||||
$entity_number = '0029';
|
||||
|
||||
if (!empty($this->settings->{$entity_pattern})) {
|
||||
// Although $this->mock is the Invoice/etc entity,
|
||||
// we need the invitation to get company details.
|
||||
$entity_number = $this->getFormattedEntityNumber(
|
||||
$this->mock->invitation,
|
||||
(int) $entity_number,
|
||||
$this->settings->counter_padding,
|
||||
$this->settings->{$entity_pattern},
|
||||
);
|
||||
}
|
||||
|
||||
return ['values' =>
|
||||
[
|
||||
'$client.shipping_postal_code' => '46420',
|
||||
@ -325,7 +341,7 @@ class PdfMock
|
||||
'$client.currency' => 'USD',
|
||||
'$company.country' => $this->company->country()?->name ?? 'USA',
|
||||
'$company.address' => $this->company->present()->address(),
|
||||
'$tech_hero_image' => 'http://ninja.test:8000/images/pdf-designs/tech-hero-image.jpg',
|
||||
'$tech_hero_image' => 'https://invoicing.co/images/pdf-designs/tech-hero-image.jpg',
|
||||
'$task.tax_name1' => '',
|
||||
'$task.tax_name2' => '',
|
||||
'$task.tax_name3' => '',
|
||||
@ -370,7 +386,7 @@ class PdfMock
|
||||
'$company.phone' => $this->settings->phone,
|
||||
'$company.state' => $this->settings->state,
|
||||
'$credit.number' => '0029',
|
||||
'$entity_number' => '0029',
|
||||
'$entity_number' => $entity_number,
|
||||
'$credit_number' => '0029',
|
||||
'$global_margin' => '6.35mm',
|
||||
'$contact.phone' => '681-480-9828',
|
||||
|
@ -288,7 +288,6 @@ trait GeneratesCounter
|
||||
*/
|
||||
public function getNextProjectNumber(Project $project): string
|
||||
{
|
||||
|
||||
$entity_number = $this->getNextEntityNumber(Project::class, $project->client, false);
|
||||
|
||||
return $this->replaceUserVars($project, $entity_number);
|
||||
@ -412,7 +411,7 @@ trait GeneratesCounter
|
||||
*
|
||||
* @param string $pattern
|
||||
* @param string $prefix
|
||||
* @return string The padded and prefixed entity number
|
||||
* @return string The padded, prefixed and unique entity number
|
||||
*/
|
||||
private function checkEntityNumber($class, $entity, $counter, $padding, $pattern, $prefix = ''): string
|
||||
{
|
||||
@ -420,11 +419,7 @@ trait GeneratesCounter
|
||||
$check_counter = 1;
|
||||
|
||||
do {
|
||||
$number = $this->padCounter($counter, $padding);
|
||||
|
||||
$number = $this->applyNumberPattern($entity, $number, $pattern);
|
||||
|
||||
$number = $this->prefixCounter($number, $prefix);
|
||||
$number = $this->getFormattedEntityNumber($entity, $counter, $padding, $pattern);
|
||||
|
||||
$check = $class::where('company_id', $entity->company_id)->where('number', $number)->withTrashed()->exists();
|
||||
|
||||
@ -443,6 +438,26 @@ trait GeneratesCounter
|
||||
return $number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats the entity number according to pattern, prefix and padding.
|
||||
*
|
||||
* @param Collection $entity The entity ie App\Models\Client, Invoice, Quote etc
|
||||
* @param int $counter The counter
|
||||
* @param int $padding The padding
|
||||
* @param string $pattern
|
||||
* @param string $prefix
|
||||
*
|
||||
* @return string The padded and prefixed entity number
|
||||
*/
|
||||
public function getFormattedEntityNumber($entity, $counter, $padding, $pattern, $prefix = ''): string
|
||||
{
|
||||
$number = $this->padCounter($counter, $padding);
|
||||
|
||||
$number = $this->applyNumberPattern($entity, $number, $pattern);
|
||||
|
||||
return $this->prefixCounter($number, $prefix);
|
||||
}
|
||||
|
||||
/*Check if a number is available for use. */
|
||||
public function checkNumberAvailable($class, $entity, $number): bool
|
||||
{
|
||||
|
231
composer.lock
generated
231
composer.lock
generated
@ -9989,16 +9989,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpdoc-parser",
|
||||
"version": "1.29.0",
|
||||
"version": "1.29.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||
"reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc"
|
||||
"reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc",
|
||||
"reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4",
|
||||
"reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -10030,9 +10030,9 @@
|
||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0"
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1"
|
||||
},
|
||||
"time": "2024-05-06T12:04:23+00:00"
|
||||
"time": "2024-05-31T08:52:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "pragmarx/google2fa",
|
||||
@ -12517,16 +12517,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/css-selector",
|
||||
"version": "v7.0.7",
|
||||
"version": "v7.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/css-selector.git",
|
||||
"reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc"
|
||||
"reference": "843f2f7ac5e4c5bf0ec77daef23ca6d4d8922adc"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/css-selector/zipball/b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc",
|
||||
"reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc",
|
||||
"url": "https://api.github.com/repos/symfony/css-selector/zipball/843f2f7ac5e4c5bf0ec77daef23ca6d4d8922adc",
|
||||
"reference": "843f2f7ac5e4c5bf0ec77daef23ca6d4d8922adc",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -12562,7 +12562,7 @@
|
||||
"description": "Converts CSS selectors to XPath expressions",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/css-selector/tree/v7.0.7"
|
||||
"source": "https://github.com/symfony/css-selector/tree/v7.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -12578,7 +12578,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-18T09:29:19+00:00"
|
||||
"time": "2024-04-18T09:32:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
@ -12724,16 +12724,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher",
|
||||
"version": "v7.0.7",
|
||||
"version": "v7.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/event-dispatcher.git",
|
||||
"reference": "db2a7fab994d67d92356bb39c367db115d9d30f9"
|
||||
"reference": "522d2772d6c7bab843b0c52466dc7844622bacc2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/db2a7fab994d67d92356bb39c367db115d9d30f9",
|
||||
"reference": "db2a7fab994d67d92356bb39c367db115d9d30f9",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/522d2772d6c7bab843b0c52466dc7844622bacc2",
|
||||
"reference": "522d2772d6c7bab843b0c52466dc7844622bacc2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -12784,7 +12784,7 @@
|
||||
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/event-dispatcher/tree/v7.0.7"
|
||||
"source": "https://github.com/symfony/event-dispatcher/tree/v7.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -12800,7 +12800,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-18T09:29:19+00:00"
|
||||
"time": "2024-04-18T09:32:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher-contracts",
|
||||
@ -13370,24 +13370,27 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/intl",
|
||||
"version": "v7.0.7",
|
||||
"version": "v7.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/intl.git",
|
||||
"reference": "dd12042707110995e2e7d80103f8d9928bea8621"
|
||||
"reference": "1b8974c7ff07c61d4acf0e873e34dfb75190b2bb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/intl/zipball/dd12042707110995e2e7d80103f8d9928bea8621",
|
||||
"reference": "dd12042707110995e2e7d80103f8d9928bea8621",
|
||||
"url": "https://api.github.com/repos/symfony/intl/zipball/1b8974c7ff07c61d4acf0e873e34dfb75190b2bb",
|
||||
"reference": "1b8974c7ff07c61d4acf0e873e34dfb75190b2bb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2"
|
||||
"php": ">=8.2",
|
||||
"symfony/deprecation-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/string": "<7.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/filesystem": "^6.4|^7.0",
|
||||
"symfony/finder": "^6.4|^7.0",
|
||||
"symfony/var-exporter": "^6.4|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
@ -13433,7 +13436,7 @@
|
||||
"localization"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/intl/tree/v7.0.7"
|
||||
"source": "https://github.com/symfony/intl/tree/v7.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -13449,7 +13452,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-18T09:29:19+00:00"
|
||||
"time": "2024-04-18T09:32:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/mailer",
|
||||
@ -13687,16 +13690,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/options-resolver",
|
||||
"version": "v7.0.7",
|
||||
"version": "v7.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/options-resolver.git",
|
||||
"reference": "23cc173858776ad451e31f053b1c9f47840b2cfa"
|
||||
"reference": "9564f64c16f99e29f252eafc642965e8fcb755ce"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/23cc173858776ad451e31f053b1c9f47840b2cfa",
|
||||
"reference": "23cc173858776ad451e31f053b1c9f47840b2cfa",
|
||||
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/9564f64c16f99e29f252eafc642965e8fcb755ce",
|
||||
"reference": "9564f64c16f99e29f252eafc642965e8fcb755ce",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -13734,7 +13737,7 @@
|
||||
"options"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/options-resolver/tree/v7.0.7"
|
||||
"source": "https://github.com/symfony/options-resolver/tree/v7.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -13750,7 +13753,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-18T09:29:19+00:00"
|
||||
"time": "2024-04-18T09:32:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
@ -14680,16 +14683,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/property-access",
|
||||
"version": "v7.0.7",
|
||||
"version": "v7.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/property-access.git",
|
||||
"reference": "8661b861480d2807eb2789ff99d034c0c71ab955"
|
||||
"reference": "1e8c1e6ac1b19cf945d8094a0ee50296872c4cb2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/property-access/zipball/8661b861480d2807eb2789ff99d034c0c71ab955",
|
||||
"reference": "8661b861480d2807eb2789ff99d034c0c71ab955",
|
||||
"url": "https://api.github.com/repos/symfony/property-access/zipball/1e8c1e6ac1b19cf945d8094a0ee50296872c4cb2",
|
||||
"reference": "1e8c1e6ac1b19cf945d8094a0ee50296872c4cb2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -14736,7 +14739,7 @@
|
||||
"reflection"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/property-access/tree/v7.0.7"
|
||||
"source": "https://github.com/symfony/property-access/tree/v7.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -14752,25 +14755,26 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-18T09:29:19+00:00"
|
||||
"time": "2024-04-18T09:32:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/property-info",
|
||||
"version": "v7.0.7",
|
||||
"version": "v7.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/property-info.git",
|
||||
"reference": "f0bdb46e19ab308527b324b7ec36161f6880a532"
|
||||
"reference": "b10cb8cf0179aec96769df2affb881ecfc293f79"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/property-info/zipball/f0bdb46e19ab308527b324b7ec36161f6880a532",
|
||||
"reference": "f0bdb46e19ab308527b324b7ec36161f6880a532",
|
||||
"url": "https://api.github.com/repos/symfony/property-info/zipball/b10cb8cf0179aec96769df2affb881ecfc293f79",
|
||||
"reference": "b10cb8cf0179aec96769df2affb881ecfc293f79",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2",
|
||||
"symfony/string": "^6.4|^7.0"
|
||||
"symfony/string": "^6.4|^7.0",
|
||||
"symfony/type-info": "^7.1"
|
||||
},
|
||||
"conflict": {
|
||||
"phpdocumentor/reflection-docblock": "<5.2",
|
||||
@ -14819,7 +14823,7 @@
|
||||
"validator"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/property-info/tree/v7.0.7"
|
||||
"source": "https://github.com/symfony/property-info/tree/v7.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -14835,7 +14839,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-28T11:44:19+00:00"
|
||||
"time": "2024-05-30T12:09:55+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/psr-http-message-bridge",
|
||||
@ -15011,20 +15015,21 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/serializer",
|
||||
"version": "v7.0.7",
|
||||
"version": "v7.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/serializer.git",
|
||||
"reference": "08f0c517acf4b12dfc0d3963cd12f7b8023aea31"
|
||||
"reference": "972eb05320d06d07399b71b05e6da9032c865f1d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/serializer/zipball/08f0c517acf4b12dfc0d3963cd12f7b8023aea31",
|
||||
"reference": "08f0c517acf4b12dfc0d3963cd12f7b8023aea31",
|
||||
"url": "https://api.github.com/repos/symfony/serializer/zipball/972eb05320d06d07399b71b05e6da9032c865f1d",
|
||||
"reference": "972eb05320d06d07399b71b05e6da9032c865f1d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-ctype": "~1.8"
|
||||
},
|
||||
"conflict": {
|
||||
@ -15054,6 +15059,7 @@
|
||||
"symfony/property-access": "^6.4|^7.0",
|
||||
"symfony/property-info": "^6.4|^7.0",
|
||||
"symfony/translation-contracts": "^2.5|^3",
|
||||
"symfony/type-info": "^7.1",
|
||||
"symfony/uid": "^6.4|^7.0",
|
||||
"symfony/validator": "^6.4|^7.0",
|
||||
"symfony/var-dumper": "^6.4|^7.0",
|
||||
@ -15086,7 +15092,7 @@
|
||||
"description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/serializer/tree/v7.0.7"
|
||||
"source": "https://github.com/symfony/serializer/tree/v7.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -15102,7 +15108,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-28T11:44:19+00:00"
|
||||
"time": "2024-05-21T15:59:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/service-contracts",
|
||||
@ -15189,16 +15195,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
"version": "v7.0.7",
|
||||
"version": "v7.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/string.git",
|
||||
"reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63"
|
||||
"reference": "6f41b185e742737917e6f2e3eca37767fba5f17a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/e405b5424dc2528e02e31ba26b83a79fd4eb8f63",
|
||||
"reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/6f41b185e742737917e6f2e3eca37767fba5f17a",
|
||||
"reference": "6f41b185e742737917e6f2e3eca37767fba5f17a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -15212,6 +15218,7 @@
|
||||
"symfony/translation-contracts": "<2.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/emoji": "^7.1",
|
||||
"symfony/error-handler": "^6.4|^7.0",
|
||||
"symfony/http-client": "^6.4|^7.0",
|
||||
"symfony/intl": "^6.4|^7.0",
|
||||
@ -15255,7 +15262,7 @@
|
||||
"utf8"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/string/tree/v7.0.7"
|
||||
"source": "https://github.com/symfony/string/tree/v7.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -15271,7 +15278,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-18T09:29:19+00:00"
|
||||
"time": "2024-05-17T10:55:18+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation",
|
||||
@ -15446,6 +15453,88 @@
|
||||
],
|
||||
"time": "2024-04-18T09:32:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/type-info",
|
||||
"version": "v7.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/type-info.git",
|
||||
"reference": "b429d0710588fc396ba5def5329cf637d9861f9f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/type-info/zipball/b429d0710588fc396ba5def5329cf637d9861f9f",
|
||||
"reference": "b429d0710588fc396ba5def5329cf637d9861f9f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2",
|
||||
"psr/container": "^1.1|^2.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpstan/phpdoc-parser": "<1.0",
|
||||
"symfony/dependency-injection": "<6.4",
|
||||
"symfony/property-info": "<6.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpdoc-parser": "^1.0",
|
||||
"symfony/dependency-injection": "^6.4|^7.0",
|
||||
"symfony/property-info": "^6.4|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\TypeInfo\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Mathias Arlaud",
|
||||
"email": "mathias.arlaud@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Baptiste LEDUC",
|
||||
"email": "baptiste.leduc@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Extracts PHP types information.",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"PHPStan",
|
||||
"phpdoc",
|
||||
"symfony",
|
||||
"type"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/type-info/tree/v7.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-05-02T10:19:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/uid",
|
||||
"version": "v6.4.7",
|
||||
@ -15522,20 +15611,21 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/validator",
|
||||
"version": "v7.0.7",
|
||||
"version": "v7.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/validator.git",
|
||||
"reference": "ab4e75b9d23ba70e78480aecbe4d8da15adf10eb"
|
||||
"reference": "ffcc8c56502f6adaeaf6307aef5b98b53a8d0326"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/validator/zipball/ab4e75b9d23ba70e78480aecbe4d8da15adf10eb",
|
||||
"reference": "ab4e75b9d23ba70e78480aecbe4d8da15adf10eb",
|
||||
"url": "https://api.github.com/repos/symfony/validator/zipball/ffcc8c56502f6adaeaf6307aef5b98b53a8d0326",
|
||||
"reference": "ffcc8c56502f6adaeaf6307aef5b98b53a8d0326",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-ctype": "~1.8",
|
||||
"symfony/polyfill-mbstring": "~1.0",
|
||||
"symfony/polyfill-php83": "^1.27",
|
||||
@ -15568,6 +15658,7 @@
|
||||
"symfony/property-access": "^6.4|^7.0",
|
||||
"symfony/property-info": "^6.4|^7.0",
|
||||
"symfony/translation": "^6.4.3|^7.0.3",
|
||||
"symfony/type-info": "^7.1",
|
||||
"symfony/yaml": "^6.4|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
@ -15596,7 +15687,7 @@
|
||||
"description": "Provides tools to validate values",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/validator/tree/v7.0.7"
|
||||
"source": "https://github.com/symfony/validator/tree/v7.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -15612,7 +15703,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-28T11:44:19+00:00"
|
||||
"time": "2024-05-21T15:59:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/var-dumper",
|
||||
@ -20520,16 +20611,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/stopwatch",
|
||||
"version": "v7.0.7",
|
||||
"version": "v7.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/stopwatch.git",
|
||||
"reference": "41a7a24aa1dc82adf46a06bc292d1923acfe6b84"
|
||||
"reference": "13c750a45ac43c45f45d944d22499768aa1b72d8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/41a7a24aa1dc82adf46a06bc292d1923acfe6b84",
|
||||
"reference": "41a7a24aa1dc82adf46a06bc292d1923acfe6b84",
|
||||
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/13c750a45ac43c45f45d944d22499768aa1b72d8",
|
||||
"reference": "13c750a45ac43c45f45d944d22499768aa1b72d8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -20562,7 +20653,7 @@
|
||||
"description": "Provides a way to profile code",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/stopwatch/tree/v7.0.7"
|
||||
"source": "https://github.com/symfony/stopwatch/tree/v7.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -20578,7 +20669,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-18T09:29:19+00:00"
|
||||
"time": "2024-04-18T09:32:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "theseer/tokenizer",
|
||||
@ -20650,5 +20741,5 @@
|
||||
"platform-dev": {
|
||||
"php": "^8.2"
|
||||
},
|
||||
"plugin-api-version": "2.3.0"
|
||||
"plugin-api-version": "2.6.0"
|
||||
}
|
||||
|
@ -201,6 +201,7 @@ return [
|
||||
App\Providers\MultiDBProvider::class,
|
||||
App\Providers\ClientPortalServiceProvider::class,
|
||||
App\Providers\NinjaTranslationServiceProvider::class,
|
||||
// App\Providers\StaticServiceProvider::class,
|
||||
],
|
||||
|
||||
/*
|
||||
|
@ -199,7 +199,7 @@ $lang = array(
|
||||
'removed_logo' => 'Successfully removed logo',
|
||||
'sent_message' => 'Successfully sent message',
|
||||
'invoice_error' => 'Please make sure to select a client and correct any errors',
|
||||
'limit_clients' => 'You\'ve hit the :count client limit on Free accounts. Congrats on your success!.',
|
||||
'limit_clients' => 'You\'ve hit the :count client limit on Free accounts. Congrats on your success!',
|
||||
'payment_error' => 'There was an error processing your payment. Please try again later.',
|
||||
'registration_required' => 'Registration Required',
|
||||
'confirmation_required' => 'Please confirm your email address, :link to resend the confirmation email.',
|
||||
@ -5147,7 +5147,7 @@ $lang = array(
|
||||
'payment_refund_receipt' => 'Payment Refund Receipt # :number',
|
||||
'payment_receipt' => 'Payment Receipt # :number',
|
||||
'load_template_description' => 'The template will be applied to following:',
|
||||
'run_template' => 'Run template',
|
||||
'run_template' => 'Run Template',
|
||||
'statement_design' => 'Statement Design',
|
||||
'delivery_note_design' => 'Delivery Note Design',
|
||||
'payment_receipt_design' => 'Payment Receipt Design',
|
||||
@ -5306,18 +5306,20 @@ $lang = array(
|
||||
'activity_140' => 'Statement sent to :client',
|
||||
'invoice_net_amount' => 'Invoice Net Amount',
|
||||
'round_to_minutes' => 'Round To Minutes',
|
||||
'1_second' => '1 Second',
|
||||
'1_minute' => '1 Minute',
|
||||
'5_minutes' => '5 Minutes',
|
||||
'15_minutes' => '15 Minutes',
|
||||
'30_minutes' => '30 Minutes',
|
||||
'1_hour' => '1 Hour',
|
||||
'1_day' => '1 Day',
|
||||
'round_tasks' => 'Round Tasks',
|
||||
'round_tasks_help' => 'Round time intervals when saving tasks',
|
||||
'round_tasks' => 'Task Rounding Direction',
|
||||
'round_tasks_help' => 'Round task times up or down.',
|
||||
'direction' => 'Direction',
|
||||
'round_up' => 'Round Up',
|
||||
'round_down' => 'Round Down',
|
||||
'task_round_to_nearest' => 'Round To Nearest',
|
||||
'task_round_to_nearest_help' => 'The interval to round the task to.',
|
||||
'bulk_updated' => 'Successfully updated data',
|
||||
'bulk_update' => 'Bulk Update',
|
||||
'calculate' => 'Calculate',
|
||||
@ -5328,9 +5330,10 @@ $lang = array(
|
||||
'disconnected' => 'Disconnected',
|
||||
'reconnect' => 'Reconnect',
|
||||
'e_invoice_settings' => 'E-Invoice Settings',
|
||||
'btcpay_refund_subject' => 'Refund of your invoice via BTCPay',
|
||||
'btcpay_refund_body' => 'A refund intended for you has been issued. To claim it via BTCPay, please click on this link:',
|
||||
'currency_mauritanian_ouguiya' => 'Mauritanian Ouguiya',
|
||||
'currency_bhutan_ngultrum' => 'Bhutan Ngultrum',
|
||||
|
||||
);
|
||||
|
||||
return $lang;
|
@ -5322,6 +5322,12 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'money' => 'Argent',
|
||||
'web_app' => 'App web',
|
||||
'desktop_app' => 'App de bureau',
|
||||
'disconnected' => 'Déconnecté',
|
||||
'reconnect' => 'Reconnecté',
|
||||
'e_invoice_settings' => 'Paramètres E-Facture',
|
||||
'currency_mauritanian_ouguiya' => 'Ouguiya mauritanien',
|
||||
'currency_bhutan_ngultrum' => 'Ngultrum Bhoutan',
|
||||
|
||||
);
|
||||
|
||||
return $lang;
|
||||
|
1982
package-lock.json
generated
1982
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
14
package.json
14
package.json
@ -9,18 +9,20 @@
|
||||
"@babel/compat-data": "7.15.0",
|
||||
"@babel/plugin-proposal-class-properties": "^7.14.5",
|
||||
"@tailwindcss/aspect-ratio": "^0.4.2",
|
||||
"@tailwindcss/forms": "^0.5.7",
|
||||
"@tailwindcss/line-clamp": "^0.4.4",
|
||||
"@tailwindcss/typography": "^0.5.10",
|
||||
"autoprefixer": "^10.4.18",
|
||||
"cypress": "^12.5.1",
|
||||
"laravel-mix-purgecss": "^6.0.0",
|
||||
"laravel-vite-plugin": "^0.8.0",
|
||||
"postcss": "^8.4.35",
|
||||
"tailwindcss": "^3.4.1",
|
||||
"vite": "^4.4.9",
|
||||
"vite-plugin-static-copy": "^0.17.0",
|
||||
"vue-template-compiler": "^2.6.14"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tailwindcss/forms": "^0.3.4",
|
||||
"@tailwindcss/line-clamp": "^0.3.1",
|
||||
"@tailwindcss/typography": "^0.4.1",
|
||||
"autoprefixer": "^10.3.7",
|
||||
"axios": "^0.25",
|
||||
"card-js": "^1.0.13",
|
||||
"card-validator": "^8.1.1",
|
||||
@ -31,11 +33,9 @@
|
||||
"laravel-mix": "^6.0.34",
|
||||
"linkify-urls": "^4.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"postcss": "^8.3.11",
|
||||
"resolve-url-loader": "^4.0.0",
|
||||
"sass": "^1.43.4",
|
||||
"sass-loader": "^12.3.0",
|
||||
"tailwindcss": "^2.2.17"
|
||||
"sass-loader": "^12.3.0"
|
||||
},
|
||||
"type": "module"
|
||||
}
|
||||
|
109
public/build/assets/app-8722f22d.js
vendored
Normal file
109
public/build/assets/app-8722f22d.js
vendored
Normal file
File diff suppressed because one or more lines are too long
109
public/build/assets/app-a52d5f77.js
vendored
109
public/build/assets/app-a52d5f77.js
vendored
File diff suppressed because one or more lines are too long
1
public/build/assets/app-c6dc74fe.css
vendored
1
public/build/assets/app-c6dc74fe.css
vendored
File diff suppressed because one or more lines are too long
1
public/build/assets/app-c7c5fad4.css
vendored
Normal file
1
public/build/assets/app-c7c5fad4.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -9,7 +9,7 @@
|
||||
]
|
||||
},
|
||||
"resources/js/app.js": {
|
||||
"file": "assets/app-a52d5f77.js",
|
||||
"file": "assets/app-8722f22d.js",
|
||||
"imports": [
|
||||
"_index-08e160a7.js",
|
||||
"__commonjsHelpers-725317a4.js"
|
||||
@ -240,7 +240,7 @@
|
||||
"src": "resources/js/setup/setup.js"
|
||||
},
|
||||
"resources/sass/app.scss": {
|
||||
"file": "assets/app-c6dc74fe.css",
|
||||
"file": "assets/app-c7c5fad4.css",
|
||||
"isEntry": true,
|
||||
"src": "resources/sass/app.scss"
|
||||
}
|
||||
|
2
resources/sass/components/alerts.scss
vendored
2
resources/sass/components/alerts.scss
vendored
@ -3,7 +3,7 @@
|
||||
}
|
||||
|
||||
.alert-success {
|
||||
@apply border-green-500;
|
||||
@apply border-emerald-500;
|
||||
}
|
||||
|
||||
.alert-failure {
|
||||
|
4
resources/sass/components/badge.scss
vendored
4
resources/sass/components/badge.scss
vendored
@ -15,7 +15,7 @@
|
||||
}
|
||||
|
||||
.badge-success {
|
||||
@apply bg-green-100 text-green-500;
|
||||
@apply bg-emerald-100 text-emerald-500;
|
||||
}
|
||||
|
||||
.badge-secondary {
|
||||
@ -23,7 +23,7 @@
|
||||
}
|
||||
|
||||
.badge-warning {
|
||||
@apply bg-blue-500 text-yellow-600;
|
||||
@apply bg-blue-500 text-amber-600;
|
||||
}
|
||||
|
||||
.badge-info {
|
||||
|
2
resources/sass/components/validation.scss
vendored
2
resources/sass/components/validation.scss
vendored
@ -7,5 +7,5 @@
|
||||
}
|
||||
|
||||
.validation-pass {
|
||||
@apply border-green-500 text-gray-700 text-sm;
|
||||
@apply border-emerald-500 text-gray-700 text-sm;
|
||||
}
|
||||
|
@ -132,7 +132,7 @@
|
||||
|
||||
<div class="flex justify-between items-center mt-8">
|
||||
|
||||
<a href="{{route('client.login')}}" class="button button-info bg-green-600 text-white">{{ ctrans('texts.login_label') }}</a>
|
||||
<a href="{{route('client.login')}}" class="button button-info bg-emerald-600 text-white">{{ ctrans('texts.login_label') }}</a>
|
||||
|
||||
<span class="inline-flex items-center" x-data="{ terms_of_service: false, privacy_policy: false }">
|
||||
@if(!empty($register_company->settings->client_portal_terms) || !empty($register_company->settings->client_portal_privacy_policy))
|
||||
|
@ -250,7 +250,7 @@
|
||||
|
||||
@if($steps['passwordless_login_sent'])
|
||||
<span
|
||||
class="block mt-2 text-sm text-green-600">{!! ctrans('texts.sent') !!}</span>
|
||||
class="block mt-2 text-sm text-emerald-600">{!! ctrans('texts.sent') !!}</span>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
|
@ -15,22 +15,22 @@
|
||||
<table class="min-w-full shadow rounded border border-gray-200 mt-4 credits-table bg-white">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="px-6 py-3 text-xs font-medium leading-4 tracking-wider text-left text-white uppercase border-b border-gray-200 bg-primary">
|
||||
<th class="px-6 py-3 text-xs font-medium leading-4 tracking-wider text-left text-white uppercase border-b border-gray-200 bg-primary task_description">
|
||||
<span role="button" wire:click="sortBy('description')" class="cursor-pointer">
|
||||
{{ ctrans('texts.description') }}
|
||||
</span>
|
||||
</th>
|
||||
<th class="px-6 py-3 text-xs font-medium leading-4 tracking-wider text-left text-white uppercase border-b border-gray-200 bg-primary">
|
||||
<th class="px-6 py-3 text-xs font-medium leading-4 tracking-wider text-left text-white uppercase border-b border-gray-200 bg-primary task_project">
|
||||
<span role="button" wire:click="sortBy('description')" class="cursor-pointer">
|
||||
{{ ctrans('texts.project') }}
|
||||
</span>
|
||||
</th>
|
||||
<th class="px-6 py-3 border-b border-gray-200 bg-primary text-left text-xs leading-4 font-medium text-white uppercase tracking-wider">
|
||||
<th class="px-6 py-3 border-b border-gray-200 bg-primary text-left text-xs leading-4 font-medium text-white uppercase tracking-wider task_status">
|
||||
<span role="button" wire:click="sortBy('status_id')" class="cursor-pointer">
|
||||
{{ ctrans('texts.status') }}
|
||||
</span>
|
||||
</th>
|
||||
<th class="px-6 py-3 border-b border-gray-200 bg-primary text-left text-xs leading-4 font-medium text-white uppercase tracking-wider">
|
||||
<th class="px-6 py-3 border-b border-gray-200 bg-primary text-left text-xs leading-4 font-medium text-white uppercase tracking-wider task_duration">
|
||||
<span role="button" class="cursor-pointer">
|
||||
{{ ctrans('texts.duration') }}
|
||||
</span>
|
||||
@ -40,13 +40,13 @@
|
||||
<tbody>
|
||||
@foreach($tasks as $task)
|
||||
<tr class="bg-white group hover:bg-gray-100">
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm leading-5 text-gray-500">
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm leading-5 text-gray-500 task_descripton">
|
||||
{{ \Illuminate\Support\Str::limit($task->description, 80) }}
|
||||
</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm leading-5 text-gray-500">
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm leading-5 text-gray-500 task_project">
|
||||
{{ $task->project?->name }}
|
||||
</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm leading-5 text-gray-500">
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm leading-5 text-gray-500 task_status">
|
||||
<div class="flex">
|
||||
{!! $task->stringStatus() !!}
|
||||
|
||||
@ -59,7 +59,7 @@
|
||||
@endif
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm leading-5 text-gray-500">
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm leading-5 text-gray-500 task_duration">
|
||||
{{ \Carbon\CarbonInterval::seconds($task->calcDuration())->cascade()->forHumans() }}
|
||||
</td>
|
||||
</tr>
|
||||
@ -68,17 +68,17 @@
|
||||
<table class="min-w-full ml-5">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="px-6 py-3 text-xs font-medium leading-4 tracking-wider text-left text-white uppercase border-b border-gray-200 bg-gray-500">
|
||||
<th class="px-6 py-3 text-xs font-medium leading-4 tracking-wider text-left text-white uppercase border-b border-gray-200 bg-gray-500 task_date">
|
||||
<span>
|
||||
{{ ctrans('texts.date') }}
|
||||
</span>
|
||||
</th>
|
||||
<th class="px-6 py-3 text-xs font-medium leading-4 tracking-wider text-left text-white uppercase border-b border-gray-200 bg-gray-500">
|
||||
<th class="px-6 py-3 text-xs font-medium leading-4 tracking-wider text-left text-white uppercase border-b border-gray-200 bg-gray-500 task_duration">
|
||||
<span>
|
||||
{{ ctrans('texts.duration') }}
|
||||
</span>
|
||||
</th>
|
||||
<th colspan="4" class="px-6 py-3 text-xs font-medium leading-4 tracking-wider text-left text-white uppercase border-b border-gray-200 bg-gray-500">
|
||||
<th colspan="4" class="px-6 py-3 text-xs font-medium leading-4 tracking-wider text-left text-white uppercase border-b border-gray-200 bg-gray-500 task_description">
|
||||
<span>
|
||||
{{ ctrans('texts.description') }}
|
||||
</span>
|
||||
@ -89,13 +89,13 @@
|
||||
@foreach($task->processLogsExpandedNotation() as $log)
|
||||
@if(strlen($log['description']) > 1)
|
||||
<tr class="bg-white group border-b border-gray-100">
|
||||
<td class="px-6 py-4 text-sm leading-5 text-gray-500 w-1/6">
|
||||
<td class="px-6 py-4 text-sm leading-5 text-gray-500 w-1/6 task_date">
|
||||
{{ $log['start_date']}}
|
||||
</td>
|
||||
<td class="px-6 py-4 text-sm leading-5 text-gray-500 w-1/6">
|
||||
<td class="px-6 py-4 text-sm leading-5 text-gray-500 w-1/6 task_duration">
|
||||
{{ $log['duration']}}
|
||||
</td>
|
||||
<td colspan="4" class="px-6 py-4 text-sm leading-5 text-gray-500 w-4/6">
|
||||
<td colspan="4" class="px-6 py-4 text-sm leading-5 text-gray-500 w-4/6 task_description">
|
||||
{!! nl2br(e($log['description'])) !!}
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -5,10 +5,10 @@
|
||||
<div class="flex flex-col xl:flex-row gap-4">
|
||||
<div class="w-full rounded-md border border-[#E5E7EB] bg-white p-5 text-sm text-[#6C727F]">
|
||||
<h3 class="mb-4 text-xl font-semibold text-[#212529]">{{ $contact->first_name }} {{ $contact->last_name }}</h3>
|
||||
<p class="mb-1.5">{{ $contact->phone }}</p>
|
||||
<p class="mb-4">{{ $client->address1 }}</p>
|
||||
<p class="mb-1.5">{{ $client->city }}, {{ $client->state }}</p>
|
||||
<p class="mb-1.5">{{ $client->postal_code }}</p>
|
||||
<p>{{ $contact->phone }}</p>
|
||||
<p>{{ $client->address1 }}</p>
|
||||
<p>{{ $client->city }}, {{ $client->state }}</p>
|
||||
<p>{{ $client->postal_code }}</p>
|
||||
<p>{{ App\Models\Country::find($client->country_id)?->name }}</p>
|
||||
</div>
|
||||
|
||||
@ -81,16 +81,24 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-light-grey-text flex grow basis-full flex-col justify-center pt-5 text-sm md:basis-1/2 md:border-r md:border-[#E5E7EB] md:pt-0 xl:basis-auto xl:px-5">
|
||||
<p class="mb-2">{{ $client->company->settings->address1 }}</p>
|
||||
<p class="mb-2">{{ $client->company->settings->address2 }}</p>
|
||||
<p class="mb-2">{{ $client->company->settings->postal_code }}</p>
|
||||
<div class="text-light-grey-text flex grow basis-full flex-col justify-center pt-5 text-sm md:basis-1/2 md:border-r md:border-[#E5E7EB] md:pt-0 xl:basis-auto xl:px-5 space-y-2">
|
||||
<p>{{ $client->company->settings->address1 }}</p>
|
||||
<p>{{ $client->company->settings->city }} {{ $client->company->settings->state }}</p>
|
||||
<p>{{ $client->company->settings->postal_code }}</p>
|
||||
<p>{{ App\Models\Country::find($client->company->settings->country_id)?->name }}</p>
|
||||
</div>
|
||||
<div class="text-light-grey-text flex grow basis-full flex-col justify-center text-sm md:basis-1/2 md:pl-4 xl:basis-auto xl:px-5">
|
||||
<p class="mb-2">{{ $client->company->settings->email }}</p>
|
||||
<p class="mb-2">{{ $client->company->settings->phone }}</p>
|
||||
<p>{{ $client->company->settings->website }}</p>
|
||||
|
||||
<div class="text-light-grey-text flex grow basis-full flex-col justify-center text-sm md:basis-1/2 md:pl-4 xl:basis-auto xl:px-5 space-y-2 mt-3 xl:mt-0">
|
||||
<p><span class="font-semibold">{{ ctrans('texts.vat') }}</span>: {{ $client->company->settings->vat_number }}</p>
|
||||
<p>
|
||||
<a class="underline" href="mailto:{{ $client->company->settings->email }}" target="_blank">{{ $client->company->settings->email }}</a>
|
||||
</p>
|
||||
<p>{{ $client->company->settings->phone }}</p>
|
||||
<p>
|
||||
<a class="underline" href="{{ $client->company->settings->website }}" target="_blank">
|
||||
{{ $client->company->settings->website }}
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
@if(Request::isSecure())
|
||||
<span class="block mx-4 mb-4 text-xs inline-flex items-center">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-green-600"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-emerald-600"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>
|
||||
<span class="ml-1">Secure 256-bit encryption</span>
|
||||
</span>
|
||||
@endif
|
||||
|
@ -56,7 +56,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white shadow rounded-sm mb-4 mt-4 border-l-2 border-green-500" translate>
|
||||
<div class="bg-white shadow rounded-sm mb-4 mt-4 border-l-2 border-emerald-500" translate>
|
||||
<div class="px-4 py-5 sm:p-6">
|
||||
<div class="sm:flex sm:items-start sm:justify-between">
|
||||
<div>
|
||||
|
@ -1,27 +1,24 @@
|
||||
const defaultTheme = require("tailwindcss/defaultTheme");
|
||||
const defaultTheme = require('tailwindcss/defaultTheme');
|
||||
|
||||
module.exports = {
|
||||
purge: [
|
||||
content: [
|
||||
'./resources/views/portal/ninja2020/**/*.blade.php',
|
||||
'./resources/views/email/template/**/*.blade.php',
|
||||
'./resources/views/email/components/**/*.blade.php',
|
||||
'./resources/views/themes/ninja2020/**/*.blade.php',
|
||||
'./resources/views/auth/**/*.blade.php',
|
||||
'./resources/views/setup/**/*.blade.php',
|
||||
'./resources/views/billing-portal/**/*.blade.php',
|
||||
'./resources/views/billing-portal/**/*.blade.php'
|
||||
],
|
||||
theme: {
|
||||
extend: {
|
||||
fontFamily: {
|
||||
sans: ["Open Sans", ...defaultTheme.fontFamily.sans]
|
||||
}
|
||||
}
|
||||
sans: ['Open Sans', ...defaultTheme.fontFamily.sans],
|
||||
},
|
||||
},
|
||||
},
|
||||
variants: {},
|
||||
plugins: [
|
||||
require('@tailwindcss/line-clamp'),
|
||||
require('@tailwindcss/forms'),
|
||||
require('@tailwindcss/typography'),
|
||||
]
|
||||
|
||||
],
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user