mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Fixes edge cases when a payment is deleted multiple times
This commit is contained in:
parent
1ad3480f31
commit
60e5bd6e63
@ -158,9 +158,7 @@ class ActivityExport extends BaseExport
|
||||
$clean_row = [];
|
||||
|
||||
foreach (array_values($this->input['report_keys']) as $key => $value) {
|
||||
|
||||
nlog("key: {$key}, value: {$value}");
|
||||
nlog($row);
|
||||
|
||||
$clean_row[$key]['entity'] = 'activity';
|
||||
$clean_row[$key]['id'] = $key;
|
||||
$clean_row[$key]['hashed_id'] = null;
|
||||
|
@ -115,7 +115,7 @@ class TaskExport extends BaseExport
|
||||
|
||||
$this->storage_array = [];
|
||||
});
|
||||
nlog($this->storage_item_array);
|
||||
// nlog($this->storage_item_array);
|
||||
return array_merge(['columns' => $header], $this->storage_item_array);
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,8 @@ class GroupSettingFilters extends QueryFilters
|
||||
* @return Builder
|
||||
*/
|
||||
public function name(string $name = ''): Builder
|
||||
{nlog("filter");
|
||||
{
|
||||
|
||||
if (strlen($name) == 0) {
|
||||
return $this->builder;
|
||||
}
|
||||
|
@ -458,14 +458,15 @@ class ProductController extends BaseController
|
||||
*/
|
||||
public function bulk(BulkProductRequest $request)
|
||||
{
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
$action = $request->input('action');
|
||||
|
||||
$ids = $request->input('ids');
|
||||
|
||||
$products = Product::withTrashed()->whereIn('id', $ids);
|
||||
|
||||
nlog($products->count());
|
||||
|
||||
if($action == 'set_tax_id'){
|
||||
|
||||
$tax_id = $request->input('tax_id');
|
||||
@ -475,8 +476,8 @@ class ProductController extends BaseController
|
||||
return $this->listResponse(Product::withTrashed()->whereIn('id', $ids));
|
||||
}
|
||||
|
||||
$products->cursor()->each(function ($product, $key) use ($action) {
|
||||
if (auth()->user()->can('edit', $product)) {
|
||||
$products->cursor()->each(function ($product, $key) use ($action, $user) {
|
||||
if ($user->can('edit', $product)) {
|
||||
$this->product_repo->{$action}($product);
|
||||
}
|
||||
});
|
||||
|
@ -182,7 +182,8 @@ class SetupController extends Controller
|
||||
* @return Application|ResponseFactory|JsonResponse|Response
|
||||
*/
|
||||
public function checkDB(CheckDatabaseRequest $request)
|
||||
{nlog("trying");
|
||||
{
|
||||
|
||||
try {
|
||||
$status = SystemHealth::dbCheck($request);
|
||||
|
||||
|
@ -319,6 +319,14 @@ class Invoice extends BaseModel
|
||||
return $this->morphToMany(Payment::class, 'paymentable')->withTrashed()->withPivot('amount', 'refunded', 'deleted_at')->withTimestamps();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\MorphToMany<Payment>
|
||||
*/
|
||||
public function net_payments(): \Illuminate\Database\Eloquent\Relations\MorphToMany
|
||||
{
|
||||
return $this->morphToMany(Payment::class, 'paymentable')->withTrashed()->where('is_deleted',0)->withPivot('amount', 'refunded', 'deleted_at')->withTimestamps();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\MorphMany<CompanyLedger>
|
||||
*/
|
||||
|
@ -135,7 +135,6 @@ class ActivityRepository extends BaseRepository
|
||||
$design = Design::withTrashed()->find($entity_design_id);
|
||||
|
||||
if (! $entity->invitations()->exists() || ! $design) {
|
||||
nlog("No invitations for entity {$entity->id} - {$entity->number}");
|
||||
return '';
|
||||
}
|
||||
|
||||
@ -204,8 +203,6 @@ class ActivityRepository extends BaseRepository
|
||||
$design = Design::withTrashed()->find($entity_design_id);
|
||||
|
||||
if (! $entity->invitations()->exists() || ! $design) {
|
||||
nlog("No invitations for entity {$entity->id} - {$entity->number}");
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
|
@ -138,7 +138,7 @@ class ZugferdEInvoice extends AbstractService
|
||||
$this->xrechnung->addDocumentPositionTax($taxtype, 'VAT', $item->tax_rate3);
|
||||
$this->addtoTaxMap($taxtype, $linenetamount, $item->tax_rate3);
|
||||
} else {
|
||||
nlog("Can't add correct tax position");
|
||||
// nlog("Can't add correct tax position");
|
||||
}
|
||||
} else {
|
||||
if (!empty($this->invoice->tax_name1)) {
|
||||
@ -157,7 +157,7 @@ class ZugferdEInvoice extends AbstractService
|
||||
$taxtype = ZugferdDutyTaxFeeCategories::ZERO_RATED_GOODS;
|
||||
$this->xrechnung->addDocumentPositionTax($taxtype, 'VAT', 0);
|
||||
$this->addtoTaxMap($taxtype, $linenetamount, 0);
|
||||
nlog("Can't add correct tax position");
|
||||
// nlog("Can't add correct tax position");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -81,8 +81,6 @@ class HandleRestore extends AbstractService
|
||||
Paymentable::query()
|
||||
->withTrashed()
|
||||
->where('payment_id', $payment->id)
|
||||
// ->where('paymentable_type', '=', 'invoices')
|
||||
// ->where('paymentable_id', $this->invoice->id)
|
||||
->update(['deleted_at' => null]);
|
||||
});
|
||||
|
||||
@ -93,11 +91,6 @@ class HandleRestore extends AbstractService
|
||||
private function setAdjustmentAmount()
|
||||
{
|
||||
foreach ($this->invoice->payments as $payment) {
|
||||
$this->adjustment_amount += $payment->paymentables
|
||||
->where('paymentable_type', '=', 'invoices')
|
||||
->where('paymentable_id', $this->invoice->id)
|
||||
|
||||
->sum('amount');
|
||||
$this->adjustment_amount += $payment->paymentables
|
||||
->where('paymentable_type', '=', 'invoices')
|
||||
->where('paymentable_id', $this->invoice->id)
|
||||
@ -108,6 +101,7 @@ class HandleRestore extends AbstractService
|
||||
->where('paymentable_type', '=', 'App\Models\Credit')
|
||||
->sum('amount');
|
||||
|
||||
nlog("Adjustment amount: {$this->adjustment_amount}");
|
||||
}
|
||||
|
||||
$this->total_payments = $this->invoice->payments->sum('amount') - $this->invoice->payments->sum('refunded');
|
||||
@ -122,10 +116,12 @@ class HandleRestore extends AbstractService
|
||||
if ($this->adjustment_amount == $this->total_payments) {
|
||||
$this->invoice->payments()->update(['payments.deleted_at' => null, 'payments.is_deleted' => false]);
|
||||
}
|
||||
else
|
||||
$this->invoice->net_payments()->update(['payments.deleted_at' => null, 'payments.is_deleted' => false]);
|
||||
|
||||
//adjust payments down by the amount applied to the invoice payment.
|
||||
|
||||
$this->invoice->payments->fresh()->each(function ($payment) {
|
||||
$this->invoice->net_payments()->each(function ($payment) {
|
||||
$payment_adjustment = $payment->paymentables
|
||||
->where('paymentable_type', '=', 'invoices')
|
||||
->where('paymentable_id', $this->invoice->id)
|
||||
|
@ -76,14 +76,12 @@ class MarkInvoiceDeleted extends AbstractService
|
||||
private function adjustPayments()
|
||||
{
|
||||
//if total payments = adjustment amount - that means we need to delete the payments as well.
|
||||
|
||||
if ($this->adjustment_amount == $this->total_payments) {
|
||||
$this->invoice->payments()->update(['payments.deleted_at' => now(), 'payments.is_deleted' => true]);
|
||||
}
|
||||
|
||||
|
||||
//adjust payments down by the amount applied to the invoice payment.
|
||||
|
||||
$this->invoice->payments->each(function ($payment) {
|
||||
$payment_adjustment = $payment->paymentables
|
||||
->where('paymentable_type', '=', 'invoices')
|
||||
|
Loading…
x
Reference in New Issue
Block a user