Merge pull request 'Changed whole logic for invoice report' (#653) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #653
This commit was merged in pull request #653.
This commit is contained in:
@@ -77,7 +77,7 @@ class Scheduler extends Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Invoice Validation Rules ---
|
// --- Invoice Validation Rules --- (Invoice Mail)
|
||||||
$invoiceRules = AlertMailRule::where('module', 'InvoiceValidation')
|
$invoiceRules = AlertMailRule::where('module', 'InvoiceValidation')
|
||||||
->where('rule_name', 'InvoiceMail')
|
->where('rule_name', 'InvoiceMail')
|
||||||
->select('plant', 'schedule_type')
|
->select('plant', 'schedule_type')
|
||||||
@@ -104,7 +104,83 @@ class Scheduler extends Command
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'Daily':
|
case 'Daily':
|
||||||
if (now()->format('H:i') == '07:59') {
|
if (now()->format('H:i') == '17:55') {
|
||||||
|
\Artisan::call('send:invoice-report', [
|
||||||
|
'schedule_type' => $rule->schedule_type,
|
||||||
|
'plant' => $rule->plant,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//..SerialInvoice
|
||||||
|
|
||||||
|
$invoiceSerialRules = AlertMailRule::where('module', 'InvoiceValidation')
|
||||||
|
->where('rule_name', 'SerialInvoiceMail')
|
||||||
|
->select('plant', 'schedule_type')
|
||||||
|
->distinct()
|
||||||
|
->get();
|
||||||
|
|
||||||
|
foreach ($invoiceSerialRules as $rule) {
|
||||||
|
|
||||||
|
switch ($rule->schedule_type) {
|
||||||
|
case 'Live':
|
||||||
|
// Run every minute
|
||||||
|
\Artisan::call('send:invoice-report', [
|
||||||
|
'schedule_type' => $rule->schedule_type,
|
||||||
|
'plant' => $rule->plant,
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'Hourly':
|
||||||
|
if (now()->minute == 0) {
|
||||||
|
\Artisan::call('send:invoice-report', [
|
||||||
|
'schedule_type' => $rule->schedule_type,
|
||||||
|
'plant' => $rule->plant,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'Daily':
|
||||||
|
if (now()->format('H:i') == '17:55') {
|
||||||
|
\Artisan::call('send:invoice-report', [
|
||||||
|
'schedule_type' => $rule->schedule_type,
|
||||||
|
'plant' => $rule->plant,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//..MaterialInvoice
|
||||||
|
|
||||||
|
$invoiceMaterialRules = AlertMailRule::where('module', 'InvoiceValidation')
|
||||||
|
->where('rule_name', 'MaterialInvoiceMail')
|
||||||
|
->select('plant', 'schedule_type')
|
||||||
|
->distinct()
|
||||||
|
->get();
|
||||||
|
|
||||||
|
foreach ($invoiceMaterialRules as $rule) {
|
||||||
|
|
||||||
|
switch ($rule->schedule_type) {
|
||||||
|
case 'Live':
|
||||||
|
// Run every minute
|
||||||
|
\Artisan::call('send:invoice-report', [
|
||||||
|
'schedule_type' => $rule->schedule_type,
|
||||||
|
'plant' => $rule->plant,
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'Hourly':
|
||||||
|
if (now()->minute == 0) {
|
||||||
|
\Artisan::call('send:invoice-report', [
|
||||||
|
'schedule_type' => $rule->schedule_type,
|
||||||
|
'plant' => $rule->plant,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'Daily':
|
||||||
|
if (now()->format('H:i') == '17:55') {
|
||||||
\Artisan::call('send:invoice-report', [
|
\Artisan::call('send:invoice-report', [
|
||||||
'schedule_type' => $rule->schedule_type,
|
'schedule_type' => $rule->schedule_type,
|
||||||
'plant' => $rule->plant,
|
'plant' => $rule->plant,
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
namespace App\Console\Commands;
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
use App\Mail\test;
|
use App\Mail\test;
|
||||||
|
use App\Models\AlertMailRule;
|
||||||
use App\Models\InvoiceValidation;
|
use App\Models\InvoiceValidation;
|
||||||
use App\Models\Plant;
|
use App\Models\Plant;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
@@ -31,19 +32,31 @@ class SendInvoiceReport extends Command
|
|||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
$schedule = $this->argument('schedule_type');
|
$schedule = $this->argument('schedule_type');
|
||||||
// $scheduleType = $this->argument('scheduleType');
|
|
||||||
$plantIdArg = (int) $this->argument('plant');
|
$plantIdArg = (int) $this->argument('plant');
|
||||||
|
|
||||||
$mailRules = \App\Models\AlertMailRule::where('module', 'InvoiceValidation')->get()->groupBy('rule_name');
|
$invoiceRules = AlertMailRule::where('module', 'InvoiceValidation')
|
||||||
|
->where('rule_name', 'InvoiceMail')
|
||||||
|
->where('plant', $plantIdArg)
|
||||||
|
->get();
|
||||||
|
|
||||||
// $startDate = now()->setTime(8, 0, 0);
|
$serialRules = AlertMailRule::where('module', 'InvoiceValidation')
|
||||||
// $endDate = now()->copy()->addDay()->setTime(8, 0, 0);
|
->where('rule_name', 'SerialInvoiceMail')
|
||||||
|
->where('plant', $plantIdArg)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$materialRules = AlertMailRule::where('module', 'InvoiceValidation')
|
||||||
|
->where('rule_name', 'MaterialInvoiceMail')
|
||||||
|
->where('plant', $plantIdArg)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
// $this->info('Invoice Rules: ' . $invoiceRules->toJson());
|
||||||
|
// $this->info('Serial Rules: ' . $serialRules->toJson());
|
||||||
|
// $this->info('Material Rules: ' . $materialRules->toJson());
|
||||||
|
|
||||||
$serialTableData = [];
|
$serialTableData = [];
|
||||||
$materialTableData = [];
|
$materialTableData = [];
|
||||||
$bundleTableData = [];
|
$bundleTableData = [];
|
||||||
|
|
||||||
// Get plant IDs: either one plant or all
|
|
||||||
$plantIds = $plantIdArg == 0
|
$plantIds = $plantIdArg == 0
|
||||||
? InvoiceValidation::select('plant_id')->distinct()->pluck('plant_id')->toArray()
|
? InvoiceValidation::select('plant_id')->distinct()->pluck('plant_id')->toArray()
|
||||||
: [$plantIdArg];
|
: [$plantIdArg];
|
||||||
@@ -251,11 +264,23 @@ class SendInvoiceReport extends Command
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if ($mailRules->has('SerialInvoiceMail')) {
|
if ($serialRules->isNotEmpty()) {
|
||||||
|
|
||||||
foreach ($mailRules->get('SerialInvoiceMail') as $rule) {
|
foreach ($serialRules as $rule) {
|
||||||
|
|
||||||
if ($isPlantRun && $rule->plant != $plantIdArg && $rule->plant != 0) {
|
if (
|
||||||
|
$isPlantRun &&
|
||||||
|
$plantIdArg != 0 &&
|
||||||
|
$rule->plant != 0 &&
|
||||||
|
$rule->plant != $plantIdArg
|
||||||
|
) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
$plantIdArg == 0 &&
|
||||||
|
$rule->plant != 0
|
||||||
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,12 +298,12 @@ class SendInvoiceReport extends Command
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Send to MaterialInvoiceMail recipients (material + bundle table)
|
// Send to MaterialInvoiceMail recipients (material + bundle table)
|
||||||
if ($mailRules->has('MaterialInvoiceMail')) {
|
if ($materialRules->isNotEmpty()) {
|
||||||
// $emails = $mailRules['MaterialInvoiceMail']->pluck('email')->unique()->toArray();
|
// $emails = $mailRules['MaterialInvoiceMail']->pluck('email')->unique()->toArray();
|
||||||
// foreach ($emails as $email) {
|
// foreach ($emails as $email) {
|
||||||
// Mail::to($email)->send(new test([], $materialTableData, $bundleTableData, $schedule));
|
// Mail::to($email)->send(new test([], $materialTableData, $bundleTableData, $schedule));
|
||||||
// }
|
// }
|
||||||
foreach ($mailRules->get('MaterialInvoiceMail') as $rule) {
|
foreach ($materialRules as $rule) {
|
||||||
|
|
||||||
$toEmails = collect(explode(',', $rule->email))
|
$toEmails = collect(explode(',', $rule->email))
|
||||||
->map(fn ($e) => trim($e))
|
->map(fn ($e) => trim($e))
|
||||||
@@ -334,17 +359,21 @@ class SendInvoiceReport extends Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send to InvoiceMail recipients (all three tables)
|
if ($invoiceRules->isNotEmpty()) {
|
||||||
if ($mailRules->has('InvoiceMail')) {
|
|
||||||
|
|
||||||
$invoiceRules = $mailRules->get('InvoiceMail');
|
|
||||||
$hasGlobalRule = $invoiceRules->contains('plant', 0);
|
|
||||||
|
|
||||||
// foreach ($mailRules->get('InvoiceMail') as $rule) {
|
|
||||||
foreach ($invoiceRules as $rule) {
|
foreach ($invoiceRules as $rule) {
|
||||||
|
|
||||||
if ($hasGlobalRule && $rule->plant != 0) {
|
// During global run, only execute plant=0 rule
|
||||||
$this->info("Skipping rule ID {$rule->id} (plant={$rule->plant}) — covered by global plant=0 rule.");
|
if ($plantIdArg == 0 && $rule->plant != 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// During plant run, only execute matching rule
|
||||||
|
if (
|
||||||
|
$plantIdArg != 0 &&
|
||||||
|
$rule->plant != 0 &&
|
||||||
|
$rule->plant != $plantIdArg
|
||||||
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user