1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-19 16:01:34 +02:00

Move null filter to basemodel

This commit is contained in:
David Bomba 2024-08-30 15:44:01 +10:00
parent 94da1d9ded
commit 516533c374
9 changed files with 44 additions and 26 deletions

View File

@ -304,6 +304,31 @@ class BaseModel extends Model
}
/**
* arrayFilterRecursive
*
* Removes null properties from an array
*
* @param array $array
* @return array
*/
public function arrayFilterRecursive(array $array): array
{
foreach ($array as $key => $value) {
if (is_array($value)) {
// Recursively filter the nested array
$array[$key] = $this->arrayFilterRecursive($value);
}
// Remove null values
if (is_null($array[$key])) {
unset($array[$key]);
}
}
return $array;
}
/**
* Returns the base64 encoded PDF string of the entity
* @deprecated - unused implementation

View File

@ -50,7 +50,7 @@ use Laracasts\Presenter\PresentableTrait;
* @property int|null $last_login
* @property int|null $industry_id
* @property int|null $size_id
* @property object|null $e_invoice
* @property object|array|null $e_invoice
* @property string|null $address1
* @property string|null $address2
* @property string|null $city

View File

@ -76,6 +76,13 @@ class ClientRepository extends BaseRepository
$client->country_id = $company->settings->country_id;
}
if(isset($data['e_invoice']) && is_array($data['e_invoice'])) {
//ensure it is normalized first!
$data['e_invoice'] = $client->arrayFilterRecursive($data['e_invoice']);
$client->e_invoice = $data['e_invoice'];
}
$client->save();
if (! isset($client->number) || empty($client->number) || strlen($client->number) == 0) {
@ -106,6 +113,7 @@ class ClientRepository extends BaseRepository
if (array_key_exists('contacts', $contact_data) || $client->contacts()->count() == 0) {
$this->contact_repo->save($contact_data, $client);
}
return $client;
}

View File

@ -60,7 +60,7 @@ class CompanyRepository extends BaseRepository
if(isset($data['e_invoice']) && is_array($data['e_invoice'])){
//ensure it is normalized first!
$data['e_invoice'] = $this->arrayFilterRecursive($data['e_invoice']);
$data['e_invoice'] = $company->arrayFilterRecursive($data['e_invoice']);
$company->e_invoice = $data['e_invoice'];
}
@ -70,24 +70,6 @@ class CompanyRepository extends BaseRepository
return $company;
}
private function arrayFilterRecursive(array $array): array
{
foreach ($array as $key => $value) {
if (is_array($value)) {
// Recursively filter the nested array
$array[$key] = $this->arrayFilterRecursive($value);
}
// Remove null values
if (is_null($array[$key])) {
unset($array[$key]);
}
}
return $array;
}
/**
* parseCustomFields
*

View File

@ -123,10 +123,11 @@ class SendEDocument implements ShouldQueue
$activity->company_id = $model->company_id;
$activity->activity_type_id = Activity::EMAIL_EINVOICE_SUCCESS;
$activity->invoice_id = $model->id;
$activity->notes = $guid;
$activity->notes = str_replace('"', '', $guid);
$activity->save();
$model->backup = $guid;
$model->backup = str_replace('"', '', $guid);
$model->saveQuietly();
}

View File

@ -276,7 +276,7 @@ class Peppol extends AbstractService
$this->p_invoice->DueDate = new \DateTime($this->invoice->due_date);
}
$this->p_invoice->InvoiceTypeCode = 380; //
$this->p_invoice->InvoiceTypeCode = ($this->invoice->amount >= 0) ? 380 : 381; //
$this->p_invoice->AccountingSupplierParty = $this->getAccountingSupplierParty();
$this->p_invoice->AccountingCustomerParty = $this->getAccountingCustomerParty();
$this->p_invoice->InvoiceLine = $this->getInvoiceLines();

View File

@ -201,8 +201,8 @@
"url": "https://github.com/turbo124/snappdf"
},
{
"type":"vcs",
"url":"https://github.com/karneaud/QuickBooks-V3-PHP-SDK.git"
"type": "vcs",
"url": "https://github.com/karneaud/QuickBooks-V3-PHP-SDK.git"
}
],
"minimum-stability": "dev",

View File

@ -67,7 +67,7 @@ use InvoiceNinja\EInvoice\Models\Peppol\TaxCategoryType\TaxCategory;
/**
* @test
*/
class FACT1Test extends TestCase
class Fact1Test extends TestCase
{
use MockAccountData;
use DatabaseTransactions;

View File

@ -9,6 +9,8 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace Tests\Unit;
use App\Jobs\EDocument\CreateEDocument;
use App\Jobs\Entity\CreateRawPdf;
use horstoeko\zugferd\ZugferdDocumentReader;