Fixes for exports

This commit is contained in:
David Bomba 2024-04-26 13:02:19 +10:00
parent 45f2970579
commit 642fdc7139
4 changed files with 41 additions and 15 deletions

View File

@ -879,10 +879,7 @@ class BaseExport
$transformed_clients = $this->transformKeys($clients); $transformed_clients = $this->transformKeys($clients);
nlog($transformed_clients);
if(count($transformed_clients) > 0) { if(count($transformed_clients) > 0) {
nlog("yus");
$query->whereIn('client_id', $transformed_clients); $query->whereIn('client_id', $transformed_clients);
} }

View File

@ -144,18 +144,6 @@ class InvoiceExport extends BaseExport
private function decorateAdvancedFields(Invoice $invoice, array $entity): array private function decorateAdvancedFields(Invoice $invoice, array $entity): array
{ {
// if (in_array('invoice.country_id', $this->input['report_keys'])) {
// $entity['invoice.country_id'] = $invoice->client->country ? ctrans("texts.country_{$invoice->client->country->name}") : '';
// }
// if (in_array('invoice.currency_id', $this->input['report_keys'])) {
// $entity['invoice.currency_id'] = $invoice->client->currency() ? $invoice->client->currency()->code : $invoice->company->currency()->code;
// }
// if (in_array('invoice.client_id', $this->input['report_keys'])) {
// $entity['invoice.client_id'] = $invoice->client->present()->name();
// }
// if (in_array('invoice.status', $this->input['report_keys'])) { // if (in_array('invoice.status', $this->input['report_keys'])) {
// $entity['invoice.status'] = $invoice->stringStatus($invoice->status_id); // $entity['invoice.status'] = $invoice->stringStatus($invoice->status_id);
// } // }

View File

@ -23,8 +23,13 @@ class ContactDecorator implements DecoratorInterface
$contact = $entity; $contact = $entity;
} elseif($entity->contacts) { } elseif($entity->contacts) {
$contact = $entity->contacts()->first(); $contact = $entity->contacts()->first();
} elseif($entity->client) {
$contact = $entity->client->primary_contact->first() ?? $entity->client->contacts()->whereNotNull('email')->first();
} elseif($entity->vendor) {
$contact = $entity->vendor->primary_contact->first() ?? $entity->vendor->contacts()->whereNotNull('email')->first();
} }
if($contact && method_exists($this, $key)) { if($contact && method_exists($this, $key)) {
return $this->{$key}($contact); return $this->{$key}($contact);
} elseif($contact && ($contact->{$key} ?? false)) { } elseif($contact && ($contact->{$key} ?? false)) {

View File

@ -266,6 +266,42 @@ class ReportCsvGenerationTest extends TestCase
} }
public function testContactProps()
{
Invoice::factory()->count(5)->create(
[
'client_id'=> $this->client->id,
'company_id' => $this->company->id,
'user_id' => $this->user->id
]
);
$data = [
'date_range' => 'all',
'report_keys' => ['invoice.number','client.name', 'contact.email'],
'send_email' => false,
'client_id' => $this->client->hashed_id
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->post('/api/v1/reports/invoices', $data);
$response->assertStatus(200);
$arr = $response->json();
$hash = $arr['message'];
$response = $this->poll($hash);
$csv = $response->body();
$this->assertEquals('john@doe.com', $this->getFirstValueByColumn($csv, 'Contact Email'));
}
public function testForcedInsertionOfMandatoryColumns() public function testForcedInsertionOfMandatoryColumns()
{ {
$forced = ['client.name']; $forced = ['client.name'];