Merge pull request #511 from batuhawk/1.3-dev

Out-of-stock reminder settings
This commit is contained in:
Cüneyt Şentürk 2018-09-29 17:49:31 +03:00 committed by GitHub
commit 6d7bc2f6a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 127 additions and 2 deletions

View File

@ -23,6 +23,7 @@ use App\Models\Setting\Currency;
use App\Models\Setting\Tax;
use App\Notifications\Income\Invoice as Notification;
use App\Notifications\Common\Item as ItemNotification;
use App\Notifications\Common\ItemReminder as ItemReminderNotification;
use App\Traits\Currencies;
use App\Traits\DateTime;
use App\Traits\Incomes;
@ -186,6 +187,22 @@ class Invoices extends Controller
$item_object->quantity -= $item['quantity'];
$item_object->save();
if (setting('general.send_item_reminder')) {
$item_stocks = explode(',', setting('general.schedule_item_stocks'));
foreach ($item_stocks as $item_stock) {
if ($item_object->quantity == $item_stock) {
foreach ($item_object->company->users as $user) {
if (!$user->can('read-notifications')) {
continue;
}
$user->notify(new ItemReminderNotification($item_object));
}
}
}
}
// Notify users if out of stock
if ($item_object->quantity == 0) {
foreach ($item_object->company->users as $user) {

View File

@ -0,0 +1,33 @@
<?php
namespace App\Listeners\Updates;
use App\Events\UpdateFinished;
use Artisan;
class Version130 extends Listener
{
const ALIAS = 'core';
const VERSION = '1.3.0';
/**
* Handle the event.
*
* @param $event
* @return void
*/
public function handle(UpdateFinished $event)
{
// Check if should listen
if (!$this->check($event)) {
return;
}
// Set new Item Reminder settings
setting(['general.send_item_reminder' => '0');
setting(['general.schedule_item_stocks' => '3,5,7']);
setting()->save();
}
}

View File

@ -44,7 +44,7 @@ class Item extends Notification
public function toMail($notifiable)
{
$message = (new MailMessage)
->line(trans('items.notification.message', ['name' => $this->item->name]))
->line(trans('items.notification.message.out_of_stock', ['name' => $this->item->name]))
->action(trans('items.notification.button'), url('items/items', $this->item->id, true));
// Override per company as Laravel doesn't read config

View File

@ -0,0 +1,69 @@
<?php
namespace App\Notifications\Common;
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;
class ItemReminder extends Notification
{
/**
* The item model.
*
* @var object
*/
public $item;
/**
* Create a notification instance.
*
* @param object $item
*/
public function __construct($item)
{
$this->item = $item;
}
/**
* Get the notification's channels.
*
* @param mixed $notifiable
* @return array|string
*/
public function via($notifiable)
{
return ['mail', 'database'];
}
/**
* Build the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
$message = (new MailMessage)
->line(trans('items.notification.message.reminder', ['name' => $this->item->name]))
->action(trans('items.notification.button'), url('items/items', $this->item->id, true));
// Override per company as Laravel doesn't read config
$message->from(config('mail.from.address'), config('mail.from.name'));
return $message;
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
'item_id' => $this->item->id,
'name' => $this->item->name,
];
}
}

View File

@ -28,6 +28,7 @@ class EventServiceProvider extends ServiceProvider
'App\Listeners\Updates\Version129',
'App\Listeners\Updates\Version1210',
'App\Listeners\Updates\Version1211',
'App\Listeners\Updates\Version130',
],
'Illuminate\Auth\Events\Login' => [
'App\Listeners\Auth\Login',

View File

@ -8,7 +8,10 @@ return [
'sku' => 'SKU',
'notification' => [
'message' => 'You are receiving this email because the :name is running out of stock.',
'message' => [
'reminder' => 'You are receiving this email because the :name is remind of stock.',
'out_of_stock' => 'You are receiving this email because the :name is running out of stock.',
],
'button' => 'View Now',
],

View File

@ -66,6 +66,8 @@ return [
'bill_days' => 'Send Before Due Days',
'cron_command' => 'Cron Command',
'schedule_time' => 'Hour To Run',
'send_item_reminder'=> 'Send Item Reminder',
'item_stocks' => 'Send When Item Stock',
],
'appearance' => [
'tab' => 'Appearance',