1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-13 22:54:25 +01:00

Merge pull request #8479 from turbo124/v5-develop

move e_invoice config into company settings
This commit is contained in:
David Bomba 2023-04-28 11:57:27 +10:00 committed by GitHub
commit 78927994e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
33 changed files with 2000 additions and 2162 deletions

View File

@ -174,7 +174,7 @@ class SendRemindersCron extends Command
$invoice->calc()->getInvoice()->save(); $invoice->calc()->getInvoice()->save();
$invoice->fresh(); $invoice->fresh();
$invoice->service()->deletePdf()->save(); $invoice->service()->deletePdf()->save();
if ($invoice->company->enable_e_invoice){ if ($invoice->client->getSetting('enable_e_invoice')){
$invoice->service()->deleteEInvoice()->save(); $invoice->service()->deleteEInvoice()->save();
} }

View File

@ -479,7 +479,10 @@ class CompanySettings extends BaseSettings
public $default_expense_payment_type_id = '0'; public $default_expense_payment_type_id = '0';
public $enable_e_invoice = false;
public static $casts = [ public static $casts = [
'enable_e_invoice' => 'bool',
'default_expense_payment_type_id' => 'string', 'default_expense_payment_type_id' => 'string',
'e_invoice_type' => 'string', 'e_invoice_type' => 'string',
'mailgun_endpoint' => 'string', 'mailgun_endpoint' => 'string',

View File

@ -200,7 +200,6 @@ class Yodlee
} }
} }
public function getTransactions($params = []) public function getTransactions($params = [])
{ {
$token = $this->getAccessToken(); $token = $this->getAccessToken();
@ -208,7 +207,6 @@ class Yodlee
$response = Http::withHeaders($this->getHeaders(["Authorization" => "Bearer {$token}"]))->get($this->getEndpoint(). "/transactions", $params); $response = Http::withHeaders($this->getHeaders(["Authorization" => "Bearer {$token}"]))->get($this->getEndpoint(). "/transactions", $params);
if ($response->successful()) { if ($response->successful()) {
// return $response->object();
$it = new IncomeTransformer(); $it = new IncomeTransformer();
return $it->transform($response->object()); return $it->transform($response->object());
} }

View File

@ -22,17 +22,11 @@ class YodleeController extends BaseController
{ {
public function auth(YodleeAuthRequest $request) public function auth(YodleeAuthRequest $request)
{ {
// create a user at this point
// use the one time token here to pull in the actual user
// store the user_account_id on the accounts table
$yodlee = new Yodlee(); $yodlee = new Yodlee();
$company = $request->getCompany(); $company = $request->getCompany();
//ensure user is enterprise!!
if ($company->account->bank_integration_account_id) { if ($company->account->bank_integration_account_id) {
$flow = 'edit'; $flow = 'edit';

View File

@ -11,24 +11,25 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\BankIntegration;
use App\Utils\Traits\MakesHash;
use Illuminate\Http\JsonResponse;
use App\Helpers\Bank\Yodlee\Yodlee;
use Illuminate\Support\Facades\Cache;
use App\Factory\BankIntegrationFactory; use App\Factory\BankIntegrationFactory;
use App\Filters\BankIntegrationFilters; use App\Filters\BankIntegrationFilters;
use App\Helpers\Bank\Yodlee\Yodlee;
use App\Http\Requests\BankIntegration\AdminBankIntegrationRequest;
use App\Http\Requests\BankIntegration\BulkBankIntegrationRequest;
use App\Http\Requests\BankIntegration\CreateBankIntegrationRequest;
use App\Http\Requests\BankIntegration\DestroyBankIntegrationRequest;
use App\Http\Requests\BankIntegration\EditBankIntegrationRequest;
use App\Http\Requests\BankIntegration\ShowBankIntegrationRequest;
use App\Http\Requests\BankIntegration\StoreBankIntegrationRequest;
use App\Http\Requests\BankIntegration\UpdateBankIntegrationRequest;
use App\Jobs\Bank\ProcessBankTransactions; use App\Jobs\Bank\ProcessBankTransactions;
use App\Models\BankIntegration;
use App\Repositories\BankIntegrationRepository; use App\Repositories\BankIntegrationRepository;
use App\Transformers\BankIntegrationTransformer; use App\Transformers\BankIntegrationTransformer;
use App\Utils\Traits\MakesHash; use App\Http\Requests\BankIntegration\BulkBankIntegrationRequest;
use Illuminate\Http\Request; use App\Http\Requests\BankIntegration\EditBankIntegrationRequest;
use Illuminate\Support\Facades\Cache; use App\Http\Requests\BankIntegration\ShowBankIntegrationRequest;
use App\Http\Requests\BankIntegration\AdminBankIntegrationRequest;
use App\Http\Requests\BankIntegration\StoreBankIntegrationRequest;
use App\Http\Requests\BankIntegration\CreateBankIntegrationRequest;
use App\Http\Requests\BankIntegration\UpdateBankIntegrationRequest;
use App\Http\Requests\BankIntegration\DestroyBankIntegrationRequest;
class BankIntegrationController extends BaseController class BankIntegrationController extends BaseController
{ {
@ -159,7 +160,7 @@ class BankIntegrationController extends BaseController
/** /**
* Perform bulk actions on the list view. * Perform bulk actions on the list view.
* *
* @return Collection * @return Response
* *
*/ */
public function bulk(BulkBankIntegrationRequest $request) public function bulk(BulkBankIntegrationRequest $request)
@ -168,12 +169,12 @@ class BankIntegrationController extends BaseController
$ids = request()->input('ids'); $ids = request()->input('ids');
$bank_integrations = BankIntegration::withTrashed()->whereIn('id', $this->transformKeys($ids)) BankIntegration::withTrashed()->whereIn('id', $this->transformKeys($ids))
->company() ->company()
->cursor() ->cursor()
->each(function ($bank_integration, $key) use ($action) { ->each(function ($bank_integration, $key) use ($action) {
$this->bank_integration_repo->{$action}($bank_integration); $this->bank_integration_repo->{$action}($bank_integration);
}); });
/* Need to understand which permission are required for the given bulk action ie. view / edit */ /* Need to understand which permission are required for the given bulk action ie. view / edit */
@ -184,7 +185,7 @@ class BankIntegrationController extends BaseController
/** /**
* Return the remote list of accounts stored on the third party provider. * Return the remote list of accounts stored on the third party provider.
* *
* @return Response * @return JsonResponse
*/ */
public function refreshAccounts(AdminBankIntegrationRequest $request) public function refreshAccounts(AdminBankIntegrationRequest $request)
{ {
@ -227,7 +228,7 @@ class BankIntegrationController extends BaseController
} }
} }
if (Cache::get("throttle_polling:{$account->key}")) { if (Cache::get("throttle_polling:{$user_account->key}")) {
return response()->json(BankIntegration::query()->company(), 200); return response()->json(BankIntegration::query()->company(), 200);
} }
@ -276,7 +277,7 @@ class BankIntegrationController extends BaseController
* Return the remote list of accounts stored on the third party provider * Return the remote list of accounts stored on the third party provider
* and update our local cache. * and update our local cache.
* *
* @return Response * @return JsonResponse
* *
*/ */
public function getTransactions(AdminBankIntegrationRequest $request) public function getTransactions(AdminBankIntegrationRequest $request)

View File

@ -63,6 +63,8 @@ class ProcessBankTransactions implements ShouldQueue
//Loop through everything until we are up to date //Loop through everything until we are up to date
$this->from_date = $this->from_date ?: '2021-01-01'; $this->from_date = $this->from_date ?: '2021-01-01';
nlog("Processing transactions for account: {$this->bank_integration->account->key}");
do { do {
try { try {
$this->processTransactions(); $this->processTransactions();

View File

@ -212,7 +212,7 @@ class CreateEntityPdf implements ShouldQueue
throw new FilePermissionsFailure($e->getMessage()); throw new FilePermissionsFailure($e->getMessage());
} }
} }
if ($this->entity_string == "invoice" && $this->company->enable_e_invoice){ if ($this->entity_string == "invoice" && $this->client->getSetting('enable_e_invoice')){
(new CreateEInvoice($this->entity, true))->handle(); (new CreateEInvoice($this->entity, true))->handle();
} }
$this->invitation = null; $this->invitation = null;

View File

@ -75,7 +75,7 @@ class ZipInvoices implements ShouldQueue
$this->invoices->each(function ($invoice) { $this->invoices->each(function ($invoice) {
(new CreateEntityPdf($invoice->invitations()->first()))->handle(); (new CreateEntityPdf($invoice->invitations()->first()))->handle();
if ($this->company->enable_e_invoice){ if ($invoice->client->getSetting('enable_e_invoice')){
(new CreateEInvoice($invoice, false))->handle(); (new CreateEInvoice($invoice, false))->handle();
} }
}); });
@ -86,13 +86,13 @@ class ZipInvoices implements ShouldQueue
$file = $invoice->service()->getInvoicePdf(); $file = $invoice->service()->getInvoicePdf();
$zip_file_name = basename($file); $zip_file_name = basename($file);
$zipFile->addFromString($zip_file_name, Storage::get($file)); $zipFile->addFromString($zip_file_name, Storage::get($file));
}
if($this->company->enable_e_invoice){ if($invoice->client->getSetting('enable_e_invoice')){
foreach ($this->invoices as $invoice) {
$xinvoice = $invoice->service()->getEInvoice(); $xinvoice = $invoice->service()->getEInvoice();
$xinvoice_zip_file_name = basename($xinvoice); $xinvoice_zip_file_name = basename($xinvoice);
$zipFile->addFromString($xinvoice_zip_file_name, Storage::get($xinvoice)); $zipFile->addFromString($xinvoice_zip_file_name, Storage::get($xinvoice));
} }
} }

View File

@ -153,7 +153,7 @@ class TemplateEmail extends Mailable
$this->attachData($ubl_string, $this->invitation->invoice->getFileName('xml')); $this->attachData($ubl_string, $this->invitation->invoice->getFileName('xml'));
} }
} }
if ($this->invitation && $this->invitation->invoice && $company->enable_e_invoice && $this->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) { if ($this->invitation && $this->invitation->invoice && $this->invitation->invoice->client->getSetting('enable_e_invoice') && $this->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) {
$this->invitation->invoice->service()->getEInvoice($this->invitation->contact); $this->invitation->invoice->service()->getEInvoice($this->invitation->contact);
$disk = config('filesystems.default'); $disk = config('filesystems.default');
$this->attach(Storage::disk($disk)->path($this->invitation->invoice->client->xinvoice_filepath($this->invitation->invoice->invitations->first()) . $this->invitation->invoice->getFileName("xml"))); $this->attach(Storage::disk($disk)->path($this->invitation->invoice->client->xinvoice_filepath($this->invitation->invoice->invitations->first()) . $this->invitation->invoice->getFileName("xml")));

View File

@ -35,8 +35,8 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @property int|null $created_at * @property int|null $created_at
* @property int|null $updated_at * @property int|null $updated_at
* @property int|null $deleted_at * @property int|null $deleted_at
* @property int $disabled_upstream * @property bool $disabled_upstream
* @property int $auto_sync * @property bool $auto_sync
* @property-read \App\Models\Account $account * @property-read \App\Models\Account $account
* @property-read \App\Models\Company $company * @property-read \App\Models\Company $company
* @property-read mixed $hashed_id * @property-read mixed $hashed_id

View File

@ -40,6 +40,7 @@ use Illuminate\Support\Str;
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scopeExclude() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scopeExclude()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel find() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel find()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel whereIn() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel whereIn()
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration where()
* @method \App\Models\Company company() * @method \App\Models\Company company()
* @method int companyId() * @method int companyId()
* @method Builder|static exclude($columns) * @method Builder|static exclude($columns)

View File

@ -167,79 +167,12 @@ use Laracasts\Presenter\PresentableTrait;
* @method static \Illuminate\Database\Eloquent\Builder|Client whereWebsite($value) * @method static \Illuminate\Database\Eloquent\Builder|Client whereWebsite($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client withTrashed() * @method static \Illuminate\Database\Eloquent\Builder|Client withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Client withoutTrashed() * @method static \Illuminate\Database\Eloquent\Builder|Client withoutTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Client with()
* @property string $payment_balance * @property string $payment_balance
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @method static \Illuminate\Database\Eloquent\Builder|Client wherePaymentBalance($value) * @method static \Illuminate\Database\Eloquent\Builder|Client wherePaymentBalance($value)
* @property mixed $tax_data * @property mixed $tax_data
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @method static \Illuminate\Database\Eloquent\Builder|Client whereTaxData($value) * @method static \Illuminate\Database\Eloquent\Builder|Client whereTaxData($value)
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @property int $is_tax_exempt * @property int $is_tax_exempt
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @method static \Illuminate\Database\Eloquent\Builder|Client whereIsTaxExempt($value) * @method static \Illuminate\Database\Eloquent\Builder|Client whereIsTaxExempt($value)
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
@ -247,6 +180,7 @@ use Laracasts\Presenter\PresentableTrait;
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\GroupSetting> $group_settings
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
@ -258,130 +192,9 @@ use Laracasts\Presenter\PresentableTrait;
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @property int $has_valid_vat_number * @property int $has_valid_vat_number
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @method static \Illuminate\Database\Eloquent\Builder|Client whereHasValidVatNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereLeitwegId($value)
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @property string|null $routing_id
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @method static \Illuminate\Database\Eloquent\Builder|Client whereRoutingId($value)
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @mixin \Eloquent * @mixin \Eloquent
*/ */
class Client extends BaseModel implements HasLocalePreference class Client extends BaseModel implements HasLocalePreference

View File

@ -96,7 +96,6 @@ use Laracasts\Presenter\PresentableTrait;
* @property int $stock_notification * @property int $stock_notification
* @property string|null $matomo_url * @property string|null $matomo_url
* @property int|null $matomo_id * @property int|null $matomo_id
* @property bool $enable_e_invoice
* @property int $enabled_expense_tax_rates * @property int $enabled_expense_tax_rates
* @property int $invoice_task_project * @property int $invoice_task_project
* @property int $report_include_deleted * @property int $report_include_deleted
@ -640,8 +639,7 @@ use Laracasts\Presenter\PresentableTrait;
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Vendor> $vendors * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Vendor> $vendors
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Webhook> $webhooks * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Webhook> $webhooks
* @property int $tax_all_products * @property int $tax_all_products
* @property int $enable_e_invoice * @property string $e_invoice_type
* @property string $xinvoice_type
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $all_activities * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $all_activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $all_documents * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $all_documents

View File

@ -55,29 +55,6 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting withTrashed() * @method static \Illuminate\Database\Eloquent\Builder|GroupSetting withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting withoutTrashed() * @method static \Illuminate\Database\Eloquent\Builder|GroupSetting withoutTrashed()
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @mixin \Eloquent * @mixin \Eloquent
*/ */
class GroupSetting extends StaticModel class GroupSetting extends StaticModel

View File

@ -77,6 +77,7 @@ use Illuminate\Support\Facades\Storage;
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereViewedDate($value) * @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereViewedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation withTrashed() * @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation withoutTrashed() * @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation withoutTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation where()
* @mixin \Eloquent * @mixin \Eloquent
*/ */
class InvoiceInvitation extends BaseModel class InvoiceInvitation extends BaseModel
@ -166,7 +167,7 @@ class InvoiceInvitation extends BaseModel
public function pdf_file_path() public function pdf_file_path()
{ {
$storage_path = Storage::url($this->invoice->client->invoice_filepath().$this->invoice->numberFormatter().'.pdf'); $storage_path = Storage::url($this->invoice->client->invoice_filepath($this).$this->invoice->numberFormatter().'.pdf');
if (! Storage::exists($this->invoice->client->invoice_filepath($this).$this->invoice->numberFormatter().'.pdf')) { if (! Storage::exists($this->invoice->client->invoice_filepath($this).$this->invoice->numberFormatter().'.pdf')) {
event(new InvoiceWasUpdated($this->invoice, $this->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null))); event(new InvoiceWasUpdated($this->invoice, $this->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null)));

View File

@ -40,15 +40,15 @@ class AppServiceProvider extends ServiceProvider
*/ */
public function boot() public function boot()
{ {
\DB::listen(function($query) { // \DB::listen(function($query) {
nlog( // nlog(
$query->sql, // $query->sql,
[ // [
'bindings' => $query->bindings, // 'bindings' => $query->bindings,
'time' => $query->time // 'time' => $query->time
] // ]
); // );
}); // });
// Model::preventLazyLoading( // Model::preventLazyLoading(
// !$this->app->isProduction() // !$this->app->isProduction()

View File

@ -11,7 +11,9 @@
namespace App\Repositories; namespace App\Repositories;
use App\Utils\Ninja;
use App\Models\BankIntegration; use App\Models\BankIntegration;
use App\Helpers\Bank\Yodlee\Yodlee;
/** /**
* Class for bank integration repository. * Class for bank integration repository.
@ -22,8 +24,46 @@ class BankIntegrationRepository extends BaseRepository
{ {
//stub to store //stub to store
$bank_integration->fill($data); $bank_integration->fill($data);
$bank_integration->save(); $bank_integration->save();
return $bank_integration->fresh(); return $bank_integration->fresh();
} }
/**
* Removes the bank integration from Yodlee
*
* @param BankIntegration $bank_integration
*
* @return BankIntegration $bank_integration
*/
public function delete($bank_integration) :BankIntegration
{
if ($bank_integration->is_deleted) {
return $bank_integration;
}
if(Ninja::isHosted())
{
$account = $bank_integration->account;
$bank_integration_account_id = $account->bank_integration_account_id;
$yodlee = new Yodlee($bank_integration_account_id);
try {
$yodlee->deleteAccount($bank_integration->bank_account_id);
}
catch(\Exception $e){
}
}
parent::delete($bank_integration);
return $bank_integration;
}
} }

View File

@ -295,7 +295,7 @@ class BaseRepository
} }
if (! $model->design_id) { if (! $model->design_id) {
$model->design_id = $this->decodePrimaryKey($client->getSetting('invoice_design_id')); $model->design_id = intval($this->decodePrimaryKey($client->getSetting('invoice_design_id')));
} }
//links tasks and expenses back to the invoice, but only if we are not in the middle of a transaction. //links tasks and expenses back to the invoice, but only if we are not in the middle of a transaction.
@ -334,7 +334,7 @@ class BaseRepository
if ($model instanceof Quote) { if ($model instanceof Quote) {
if (! $model->design_id) { if (! $model->design_id) {
$model->design_id = $this->decodePrimaryKey($client->getSetting('quote_design_id')); $model->design_id = intval($this->decodePrimaryKey($client->getSetting('quote_design_id')));
} }
$model = $model->calc()->getQuote(); $model = $model->calc()->getQuote();
@ -348,7 +348,7 @@ class BaseRepository
if ($model instanceof RecurringInvoice) { if ($model instanceof RecurringInvoice) {
if (! $model->design_id) { if (! $model->design_id) {
$model->design_id = $this->decodePrimaryKey($client->getSetting('invoice_design_id')); $model->design_id = intval($this->decodePrimaryKey($client->getSetting('invoice_design_id')));
} }
$model = $model->calc()->getRecurringInvoice(); $model = $model->calc()->getRecurringInvoice();

View File

@ -78,8 +78,8 @@ class InvoiceRepository extends BaseRepository
/** /**
* Handles the restoration on a deleted invoice. * Handles the restoration on a deleted invoice.
* *
* @param [type] $invoice [description] * @param Invoice $invoice
* @return [type] [description] * @return Invoice
*/ */
public function restore($invoice) :Invoice public function restore($invoice) :Invoice
{ {

View File

@ -298,7 +298,7 @@ class EmailDefaults
$this->email->email_object->entity instanceof Quote || $this->email->email_object->entity instanceof Quote ||
$this->email->email_object->entity instanceof Credit)) { $this->email->email_object->entity instanceof Credit)) {
$pdf = ((new CreateRawPdf($this->email->email_object->invitation, $this->email->company->db))->handle()); $pdf = ((new CreateRawPdf($this->email->email_object->invitation, $this->email->company->db))->handle());
if ($this->email->email_object->company->enable_e_invoice && $this->email->email_object->entity instanceof Invoice) { if ($this->email->email_object->settings->enable_e_invoice && $this->email->email_object->entity instanceof Invoice) {
$tempfile = tmpfile(); $tempfile = tmpfile();
file_put_contents(stream_get_meta_data($tempfile)['uri'], $pdf); file_put_contents(stream_get_meta_data($tempfile)['uri'], $pdf);
$xinvoice_path = (new CreateEInvoice($this->email->email_object->entity, true, stream_get_meta_data($tempfile)['uri']))->handle(); $xinvoice_path = (new CreateEInvoice($this->email->email_object->entity, true, stream_get_meta_data($tempfile)['uri']))->handle();
@ -320,7 +320,7 @@ class EmailDefaults
} }
} }
/** E-Invoice xml file */ /** E-Invoice xml file */
if ($this->email->email_object->company->enable_e_invoice && $this->email->email_object->entity instanceof Invoice) { if ($this->email->email_object->settings->enable_e_invoice && $this->email->email_object->entity instanceof Invoice) {
$xinvoice_path = (new GetInvoiceXInvoice($this->email->email_object->entity))->run(); $xinvoice_path = (new GetInvoiceXInvoice($this->email->email_object->entity))->run();
$this->email->email_object->attachments = array_merge($this->email->email_object->attachments, [['file' => base64_encode(file_get_contents($xinvoice_path)), 'name' => explode(".", $this->email->email_object->entity->getFileName('xml'))[0]."-e_invoice.xml"]]); $this->email->email_object->attachments = array_merge($this->email->email_object->attachments, [['file' => base64_encode(file_get_contents($xinvoice_path)), 'name' => explode(".", $this->email->email_object->entity->getFileName('xml'))[0]."-e_invoice.xml"]]);
} }

View File

@ -450,7 +450,7 @@ class InvoiceService
$this->invoice->invitations->each(function ($invitation) { $this->invoice->invitations->each(function ($invitation) {
(new CreateEntityPdf($invitation))->handle(); (new CreateEntityPdf($invitation))->handle();
if ($invitation->company->enable_e_invoice && $invitation instanceof InvoiceInvitation) if ($invitation->invoice->client->getSetting('enable_e_invoice') && $invitation instanceof InvoiceInvitation)
{ {
(new CreateEInvoice($invitation->invoice, true))->handle(); (new CreateEInvoice($invitation->invoice, true))->handle();
} }
@ -464,7 +464,7 @@ class InvoiceService
$this->invoice->invitations->each(function ($invitation) { $this->invoice->invitations->each(function ($invitation) {
CreateEntityPdf::dispatch($invitation); CreateEntityPdf::dispatch($invitation);
if ($invitation->company->enable_e_invoice && $invitation instanceof InvoiceInvitation) { if ($invitation->invoice->client->getSetting('enable_e_invoice') && $invitation instanceof InvoiceInvitation) {
CreateEInvoice::dispatch($invitation->invoice, true); CreateEInvoice::dispatch($invitation->invoice, true);
} }

View File

@ -149,7 +149,8 @@ class ClientTransformer extends EntityTransformer
'number' => (string) $client->number ?: '', 'number' => (string) $client->number ?: '',
'has_valid_vat_number' => (bool) $client->has_valid_vat_number, 'has_valid_vat_number' => (bool) $client->has_valid_vat_number,
'is_tax_exempt' => (bool) $client->is_tax_exempt, 'is_tax_exempt' => (bool) $client->is_tax_exempt,
// 'tax_data' => $client->tax_data ?: '', 'routing_id' => (string) $client->routing_id,
'tax_data' => $client->tax_data ?: '',
]; ];
} }
} }

View File

@ -196,7 +196,6 @@ class CompanyTransformer extends EntityTransformer
'invoice_task_hours' => (bool) $company->invoice_task_hours, 'invoice_task_hours' => (bool) $company->invoice_task_hours,
'calculate_taxes' => (bool) $company->calculate_taxes, 'calculate_taxes' => (bool) $company->calculate_taxes,
'tax_data' => $company->tax_data ?: new \stdClass, 'tax_data' => $company->tax_data ?: new \stdClass,
'enable_e_invoice' => (bool) $company->enable_e_invoice,
]; ];
} }

View File

@ -149,7 +149,7 @@ class InvoiceTransformer extends EntityTransformer
'paid_to_date' => (float) $invoice->paid_to_date, 'paid_to_date' => (float) $invoice->paid_to_date,
'subscription_id' => $this->encodePrimaryKey($invoice->subscription_id), 'subscription_id' => $this->encodePrimaryKey($invoice->subscription_id),
'auto_bill_enabled' => (bool) $invoice->auto_bill_enabled, 'auto_bill_enabled' => (bool) $invoice->auto_bill_enabled,
// 'tax_data' => $invoice->tax_data ?: '', 'tax_data' => $invoice->tax_data ?: '',
]; ];
} }
} }

View File

@ -44,12 +44,14 @@ class Ninja
{ {
$mysql_version = DB::select(DB::raw('select version() as version'))[0]->version; $mysql_version = DB::select(DB::raw('select version() as version'))[0]->version;
$version = request()->input('version', 'No Version Supplied.');
$info = 'App Version: v'.config('ninja.app_version').'\\n'. $info = 'App Version: v'.config('ninja.app_version').'\\n'.
'White Label: '.'\\n'. // TODO: Implement white label with hasFeature. 'White Label: '.'\\n'. // TODO: Implement white label with hasFeature.
'Server OS: '.php_uname('s').' '.php_uname('r').'\\n'. 'Server OS: '.php_uname('s').' '.php_uname('r').'\\n'.
'PHP Version: '.phpversion().'\\n'. 'PHP Version: '.phpversion().'\\n'.
'MySQL Version: '.$mysql_version.'\\n'. 'MySQL Version: '.$mysql_version.'\\n'.
'Version: '.request()->has('version') ? request()->input('version') : 'No Version Supplied.'; 'Version: '.$version;
return $info; return $info;
} }
@ -101,7 +103,8 @@ class Ninja
foreach ($fields as $key => $value) { foreach ($fields as $key => $value) {
$data .= $key.'='.$value.'&'; $data .= $key.'='.$value.'&';
} }
rtrim($data, '&');
$data = rtrim($data, '&');
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_URL, $url);

View File

@ -1,6 +1,7 @@
<?php <?php
use App\Models\Language; use App\Models\Language;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
return new class extends Migration return new class extends Migration
@ -21,6 +22,9 @@ return new class extends Migration
Language::create(['id' => 38, 'name' => 'Khmer', 'locale' => 'km_KH']); Language::create(['id' => 38, 'name' => 'Khmer', 'locale' => 'km_KH']);
} }
Schema::table('companies', function (Blueprint $table) {
$table->dropColumn('enable_e_invoice');
});
} }

File diff suppressed because it is too large Load Diff

View File

@ -4,8 +4,8 @@ includes:
parameters: parameters:
ignoreErrors: ignoreErrors:
- '#Call to an undefined method .*badMethod\(\)#' - '#Call to an undefined method .*badMethod\(\)#'
- 'Call to an undefined method Illuminate\Database\Eloquent\Builder::exclude(). - '#Call to an undefined method Illuminate\Database\Eloquent\Builder::exclude#'
level: 2 level: 4
paths: paths:
- app - app
universalObjectCratesClasses: universalObjectCratesClasses:

View File

@ -9,7 +9,7 @@
* @license https://www.elastic.co/licensing/elastic-license * @license https://www.elastic.co/licensing/elastic-license
*/ */
namespace Tests\Feature; namespace Tests\Feature\EInvoice;
use App\Services\Invoice\EInvoice\FacturaEInvoice; use App\Services\Invoice\EInvoice\FacturaEInvoice;
use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Foundation\Testing\DatabaseTransactions;
@ -19,7 +19,6 @@ use Tests\TestCase;
/** /**
* @test * @test
* @covers App\Http\Controllers\ActivityController
*/ */
class FacturaeTest extends TestCase class FacturaeTest extends TestCase
{ {

View File

@ -9,7 +9,7 @@
* @license https://www.elastic.co/licensing/elastic-license * @license https://www.elastic.co/licensing/elastic-license
*/ */
namespace Tests\Feature; namespace Tests\Feature\EInvoice;
use App\Services\Invoice\EInvoice\FatturaPA; use App\Services\Invoice\EInvoice\FatturaPA;
use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Foundation\Testing\DatabaseTransactions;

View File

@ -19,7 +19,6 @@ use App\Models\Company;
use App\Models\Invoice; use App\Models\Invoice;
use App\Models\User; use App\Models\User;
use App\Services\Report\ARDetailReport; use App\Services\Report\ARDetailReport;
use App\Services\Report\UserSalesReport;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use Illuminate\Routing\Middleware\ThrottleRequests; use Illuminate\Routing\Middleware\ThrottleRequests;
use Tests\MockAccountData; use Tests\MockAccountData;
@ -28,7 +27,7 @@ use Tests\TestCase;
/** /**
* @test * @test
*/ */
class ARDetailReportTest extends TestCase class ArDetailReportTest extends TestCase
{ {
use MakesHash; use MakesHash;

View File

@ -27,7 +27,7 @@ use Tests\TestCase;
/** /**
* @test * @test
*/ */
class ARSummaryReportTest extends TestCase class ArSummaryReportTest extends TestCase
{ {
use MakesHash; use MakesHash;

View File

@ -34,6 +34,11 @@ class PreviewTest extends TestCase
$this->withoutMiddleware( $this->withoutMiddleware(
ThrottleRequests::class ThrottleRequests::class
); );
if (config('ninja.testvars.travis') !== false) {
$this->markTestSkipped('Skip test for Travis');
}
} }
public function testPreviewRoute() public function testPreviewRoute()