diff --git a/app/Classes/General/Eloquent/Filters/WhereHasOwnersAndNotNull.php b/app/Classes/General/Eloquent/Filters/WhereHasOwnersAndNotNull.php new file mode 100644 index 00000000..b10fd92d --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/WhereHasOwnersAndNotNull.php @@ -0,0 +1,22 @@ +whereHas('owners', function ($query) use ($value) { + return $query->whereNotNull($value); + }); + } + +} \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/WhereHasOwnersAndNull.php b/app/Classes/General/Eloquent/Filters/WhereHasOwnersAndNull.php new file mode 100644 index 00000000..a9317771 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/WhereHasOwnersAndNull.php @@ -0,0 +1,22 @@ +whereHas('owners', function ($query) use ($value) { + return $query->whereNull($value); + }); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Imports/ImportStatementInvoiceController.php b/app/Http/Controllers/Imports/ImportStatementInvoiceController.php index 56eecc7d..b6cfd567 100644 --- a/app/Http/Controllers/Imports/ImportStatementInvoiceController.php +++ b/app/Http/Controllers/Imports/ImportStatementInvoiceController.php @@ -57,13 +57,13 @@ class ImportStatementInvoiceController } // if still unable to map, will try to check the shipping_info without TOPUP - foreach (['exchange','izyim'] as $system) { - $returnReference = $this->mappingTopUp($row, $system); - if ($returnReference) { - $row['mapped_result_reference'] = $returnReference; - $row['mapped_status'] = 'success'; - } - } + // foreach (['exchange','izyim'] as $system) { + // $returnReference = $this->mappingTopUp($row, $system); + // if ($returnReference) { + // $row['mapped_result_reference'] = $returnReference; + // $row['mapped_status'] = 'success'; + // } + // } return $row; } @@ -155,16 +155,18 @@ class ImportStatementInvoiceController private function mappingExchange(Array $row) { $date = $row['date']; - $transactions = Transaction::getReceiverWithJoinStatementTransactionAndOwner($row)->select('transactions.*')->where('statement_transactions.amount', $row['net_total'])->whereRaw("DATE(posting_date) = '$date'")->get(); - - if ($transactions && $transactions->count() == 0) { - $transactions = Transaction::getReceiverWithJoinStatementTransactionAndOwner($row)->select('transactions.*')->where(DB::raw('FLOOR(statement_transactions.amount)'), floor($row['net_total']))->whereRaw("DATE(posting_date) = '$date'")->get(); + $transaction = Transaction::getReceiverWithJoinStatementTransactionAndOwner($row)->select('transactions.*')->where('owner_reference', $row['shipping_info'])->first(); + + if ($transaction && $transaction->count() == 0) { + $transaction = Transaction::getReceiverWithJoinStatementTransactionAndOwner($row)->select('transactions.*')->where('statement_transactions.amount', $row['net_total'])->whereRaw("DATE(posting_date) = '$date'")->first(); } - if ($transactions && $transactions->count() == 1) { - foreach ($transactions as $key => $transaction) { - return $this->updateTransactionOwnerReference($transaction, $row['doc_no']); - } + if ($transaction && $transaction->count() == 0) { + $transaction = Transaction::getReceiverWithJoinStatementTransactionAndOwner($row)->select('transactions.*')->where(DB::raw('FLOOR(statement_transactions.amount)'), floor($row['net_total']))->whereRaw("DATE(posting_date) = '$date'")->first(); + } + + if ($transaction && $transaction->count() > 0) { + return $this->updateTransactionOwnerReference($transaction, $row['doc_no']); } return false; } diff --git a/app/Http/Resources/BankStatementTransactionResource.php b/app/Http/Resources/BankStatementTransactionResource.php index 993b8c93..8f5e0193 100644 --- a/app/Http/Resources/BankStatementTransactionResource.php +++ b/app/Http/Resources/BankStatementTransactionResource.php @@ -34,7 +34,8 @@ class BankStatementTransactionResource extends JsonResource 'owners' => [ 'approved' => BankStatementTransactionOwnerResource::collection($this->owners()->whereIn('status', [ApprovalStatus::APPROVED])->get()), 'pending_verification' => BankStatementTransactionOwnerResource::collection($this->owners()->whereIn('status', [ApprovalStatus::PENDING_VERIFICATION])->get()), - 'rejected' => BankStatementTransactionOwnerResource::collection($this->owners()->whereIn('status', [ApprovalStatus::REJECTED])->get()) + 'rejected' => BankStatementTransactionOwnerResource::collection($this->owners()->whereIn('status', [ApprovalStatus::REJECTED])->get()), + 'completed' => BankStatementTransactionOwnerResource::collection($this->owners()->whereIn('status', [ApprovalStatus::COMPLETED])->get()), ] ]; } diff --git a/resources/assets/vue/components/accounting/elements/StatementTransactionMappedComponent.vue b/resources/assets/vue/components/accounting/elements/StatementTransactionMappedComponent.vue index e4186bb6..e37e4f3b 100644 --- a/resources/assets/vue/components/accounting/elements/StatementTransactionMappedComponent.vue +++ b/resources/assets/vue/components/accounting/elements/StatementTransactionMappedComponent.vue @@ -6,11 +6,11 @@
{{ item.transaction_description_1 + ' - ' + item.transaction_description_2 }}
-
{{item.owners.approved[0].system}}
-
{{ typeString(item.owners.approved[0].type) }}
- -
{{item.owners.approved[0].invoice_reference}}
-
{{item.owners.approved[0].receipt_reference}}
+
{{item.owners.completed[0].system}}
+
{{ typeString(item.owners.completed[0].type) }}
+ +
{{item.owners.completed[0].invoice_reference}}
+
{{item.owners.completed[0].receipt_reference}}
diff --git a/resources/assets/vue/components/accounting/sections/ReportTransactionsMappedComponent.vue b/resources/assets/vue/components/accounting/sections/ReportTransactionsMappedComponent.vue index e8f99f3a..e3d4e0d2 100644 --- a/resources/assets/vue/components/accounting/sections/ReportTransactionsMappedComponent.vue +++ b/resources/assets/vue/components/accounting/sections/ReportTransactionsMappedComponent.vue @@ -57,7 +57,7 @@ }, methods: { getReportFilter() { - this.filter = {min_amount: 0, is_mapped: true, statement_transaction_owner_type_in: [1, 2], statement_transaction_owner_status_in: [2], statement_transaction_owner_invoice_or_receipt_ref_not_null: true, per_page: 100, order_by: {column: 'posting_date', DESC: true}}; + this.filter = {min_amount: 0, is_mapped: true, statement_transaction_owner_type_in: [1, 2], statement_transaction_owner_status_in: [3], per_page: 100, order_by: {column: 'posting_date', DESC: true}}; this.step = 1 } diff --git a/resources/assets/vue/components/accounting/sections/TransactionsMappingComponent.vue b/resources/assets/vue/components/accounting/sections/TransactionsMappingComponent.vue index 7a677bad..bb19b908 100644 --- a/resources/assets/vue/components/accounting/sections/TransactionsMappingComponent.vue +++ b/resources/assets/vue/components/accounting/sections/TransactionsMappingComponent.vue @@ -277,7 +277,8 @@ export default { exportReceiptToAutoCount(){ const checkedStatementTransactions = this.getCheckedStatementOwners(); - this.filter['statement_transaction_owner_type_in'] = [3,4,5,7,13,14]; + this.filter['where_has_owners_and_null'] = 'statement_transaction_owners.receipt_reference'; + this.filter['where_has_owners_and_not_null'] = 'statement_transaction_owners.invoice_reference'; let route = this.route('receiptTransactions.export')+'?filter='+JSON.stringify(this.filter); if (checkedStatementTransactions) { route += '&bankStatementTransactionId='+checkedStatementTransactions;