v.2.19
Обновлены миграции Разработка парсера меню из 1с
This commit is contained in:
@@ -66,16 +66,165 @@ class GETImportMenu extends HRCCommand implements HRCCommandInterface {
|
|||||||
$objXmlDocument = simplexml_load_file($menu_file);
|
$objXmlDocument = simplexml_load_file($menu_file);
|
||||||
$objJsonDocument = json_encode($objXmlDocument);
|
$objJsonDocument = json_encode($objXmlDocument);
|
||||||
$xmlmenu = json_decode($objJsonDocument, TRUE);
|
$xmlmenu = json_decode($objJsonDocument, TRUE);
|
||||||
$test = $xmlmenu['GeneralSettings']['@attributes'];
|
$GeneralSettings = $xmlmenu['GeneralSettings']['@attributes'];
|
||||||
/* $check_setting = Settings::where('code', 12)->first();
|
$Printers = $xmlmenu['Printers']['Item'];
|
||||||
$check_setting = $check_setting['value'] + 0;
|
$ReportCategory = $xmlmenu['ReportCategory']['Item'];
|
||||||
if ($check_setting == 0) {
|
$TypesMenu = $xmlmenu['TypesMenu']['Item'];
|
||||||
|
$Dishes = $xmlmenu['Dishes']['Item'];
|
||||||
|
$MenuItems = $xmlmenu['Menu']['Item'];
|
||||||
|
$Units_Dishes = $xmlmenu['Units_Dishes']['Item'];
|
||||||
|
$Modifiers = $xmlmenu['Modifiers']['Item'];
|
||||||
|
|
||||||
}*/
|
//проверка целостности меню
|
||||||
|
$errors = [];
|
||||||
|
$error_counter = 0;
|
||||||
|
foreach ($MenuItems as $key => $MenuItem) {
|
||||||
|
$folder_trigger = $MenuItem['@attributes']['isGroop'] + 0;
|
||||||
|
if ($folder_trigger == 0) {
|
||||||
|
if ($MenuItem['@attributes']['CodePrinter'] == ' ' || $MenuItem['@attributes']['CodePrinter'] == '0') {
|
||||||
|
$error_counter = $error_counter + 1;
|
||||||
|
array_push($errors, 'Отсутствует место хранения у товара ' . $MenuItem['@attributes']['Name']);
|
||||||
|
} else {
|
||||||
|
$dish_code_printer = $MenuItem['@attributes']['CodePrinter'] + 0;
|
||||||
|
}
|
||||||
|
$dish_code = $MenuItem['@attributes']['Code'] + 0;
|
||||||
|
$printer_trigger = 0;
|
||||||
|
$units_trigger = 0;
|
||||||
|
foreach ($Printers as $key => $printer) {
|
||||||
|
$printer_code = $printer['@attributes']['Code'] + 0;
|
||||||
|
if ($printer_code == $dish_code_printer) {
|
||||||
|
$printer_trigger = $printer_trigger + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($printer_trigger == 0) {
|
||||||
|
$error_counter = $error_counter + 1;
|
||||||
|
array_push($errors, 'Место хранения для товара ' . $MenuItem['@attributes']['Name'] . ' не найдено');
|
||||||
|
}
|
||||||
|
foreach ($Units_Dishes as $key => $Unit) {
|
||||||
|
$unit_dish_code = $Unit['@attributes']['CodeDishes'] + 0;
|
||||||
|
if ($unit_dish_code == $dish_code) {
|
||||||
|
$units_trigger = $units_trigger + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($units_trigger == 0) {
|
||||||
|
$error_counter = $error_counter + 1;
|
||||||
|
array_push($errors, 'Порционность для товара ' . $dish['@attributes']['Name'] . ' не найдена');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//конец проверки целостности меню
|
||||||
|
|
||||||
|
if ($error_counter == 0) {
|
||||||
|
//Menus, Folders, Dishes, Units, Printers, Report Categories, Modifiers
|
||||||
|
|
||||||
|
//Start menu parser
|
||||||
|
$base_menus = Menu::where('is_history', 0)->get();
|
||||||
|
foreach ($TypesMenu as $key => $Menu) {
|
||||||
|
$menu_code = $Menu['@attributes']['Code'] + 0;
|
||||||
|
$menu_name = $Menu['@attributes']['Name'];
|
||||||
|
foreach ($base_menus as $key => $base_menu) {
|
||||||
|
if ($base_menu['code'] == $menu_code) {
|
||||||
|
$old_menu = Menu::where('is_history', 0)
|
||||||
|
->where('code', $base_menu['code'])
|
||||||
|
->update(['is_history' => 1]);
|
||||||
|
}
|
||||||
|
$new_menu = Menu::upsert([
|
||||||
|
['name' => $menu_name,
|
||||||
|
'application_id' => 1,
|
||||||
|
'code' => $menu_code,
|
||||||
|
'is_history' => 0,
|
||||||
|
'is_export' => 1],
|
||||||
|
], ['name'],
|
||||||
|
['application_id'],
|
||||||
|
['code'],
|
||||||
|
['is_history'],
|
||||||
|
['is_export']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//End menu parser
|
||||||
|
|
||||||
|
//Start folders parser
|
||||||
|
$base_folders = Folders::where('is_history', 0)->get();
|
||||||
|
foreach ($MenuItems as $key => $MenuItem) {
|
||||||
|
$folder_code = $MenuItem['@attributes']['Code'] + 0;
|
||||||
|
$folder_name = $MenuItem['@attributes']['Name'];
|
||||||
|
$folder_complex = $MenuItem['@attributes']['Complex'] + 0;
|
||||||
|
$folder_menu_code = $MenuItem['@attributes']['CodeTypeMenu'] + 0;
|
||||||
|
$folder_trigger = $MenuItem['@attributes']['isGroop'] + 0;
|
||||||
|
if ($folder_trigger == 1) {
|
||||||
|
$folder_code_parent = $MenuItem['@attributes']['CodeParent'] + 0;
|
||||||
|
$create_folder_trigger = 1;
|
||||||
|
foreach ($base_folders as $key => $base_folder) {
|
||||||
|
if ($base_folder['code'] == $folder_code && $base_folder['name'] != $folder_name) {
|
||||||
|
$old_folder = Folders::where('is_history', 0)
|
||||||
|
->where('code', $base_folder['code'])
|
||||||
|
->update(['is_history' => 1]);
|
||||||
|
$create_folder_trigger = 1;
|
||||||
|
}
|
||||||
|
if ($base_folder['code'] == $folder_code && $base_folder['name'] == $folder_name) {
|
||||||
|
$create_folder_trigger = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($create_folder_trigger == 1) {
|
||||||
|
$new_folder = Folders::upsert([
|
||||||
|
['name' => $folder_name,
|
||||||
|
'parent_code' => $folder_code_parent,
|
||||||
|
'menu_code' => $folder_menu_code,
|
||||||
|
'code' => $folder_code,
|
||||||
|
'color' => '',
|
||||||
|
'is_history' => 0,
|
||||||
|
'is_export' => 1,
|
||||||
|
'is_complex' => $folder_complex,
|
||||||
|
'is_migrate' => 0,
|
||||||
|
'is_p_migrate' => 0,
|
||||||
|
'show_on_display' => 0,
|
||||||
|
'is_bot_export' => 0,
|
||||||
|
],
|
||||||
|
], ['name'],
|
||||||
|
['parent_code'],
|
||||||
|
['menu_code'],
|
||||||
|
['code'],
|
||||||
|
['color'],
|
||||||
|
['is_history'],
|
||||||
|
['is_export'],
|
||||||
|
['is_complex'],
|
||||||
|
['is_migrate'],
|
||||||
|
['is_p_migrate'],
|
||||||
|
['show_on_display'],
|
||||||
|
['is_bot_export']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//End folders parser
|
||||||
|
|
||||||
|
//Start Dishes
|
||||||
|
$base_dishes = Dishes::get();
|
||||||
|
foreach ($MenuItems as $key => $MenuItem) {
|
||||||
|
$dish_code = $MenuItem['@attributes']['Code'] + 0;
|
||||||
|
$folder_trigger = $MenuItem['@attributes']['isGroop'] + 0;
|
||||||
|
if ($folder_trigger == 0) {
|
||||||
|
foreach ($base_dishes as $key => $base_dish) {
|
||||||
|
if ($base_dish['code'] == $dish_code) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//End Dishes
|
||||||
|
}
|
||||||
|
|
||||||
|
/* $check_setting = Settings::where('code', 12)->first();
|
||||||
|
$check_setting = $check_setting['value'] + 0;
|
||||||
|
if ($check_setting == 0) {
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'status' => 'success',
|
'status' => 'success',
|
||||||
'message' => $test,
|
'error_counter' => $error_counter,
|
||||||
|
'errors' => $errors,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "hrc-admin/hello-world",
|
"name": "hrc-admin/hello-world",
|
||||||
"version": "2.18",
|
"version": "2.19",
|
||||||
"require": {
|
"require": {
|
||||||
"horeca/admin-php-module-core": "dev-master"
|
"horeca/admin-php-module-core": "dev-master"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ class DeleteFrontendFolders extends Migration {
|
|||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function up() {
|
public function up() {
|
||||||
function dirDel($dir) {
|
function Deldir($dir) {
|
||||||
$d = opendir($dir);
|
$d = opendir($dir);
|
||||||
while (($entry = readdir($d)) !== false) {
|
while (($entry = readdir($d)) !== false) {
|
||||||
if ($entry != "." && $entry != "..") {
|
if ($entry != "." && $entry != "..") {
|
||||||
if (is_dir($dir . "/" . $entry)) {
|
if (is_dir($dir . "/" . $entry)) {
|
||||||
dirDel($dir . "/" . $entry);
|
Deldir($dir . "/" . $entry);
|
||||||
} else {
|
} else {
|
||||||
unlink($dir . "/" . $entry);
|
unlink($dir . "/" . $entry);
|
||||||
}
|
}
|
||||||
@@ -25,17 +25,17 @@ class DeleteFrontendFolders extends Migration {
|
|||||||
rmdir($dir);
|
rmdir($dir);
|
||||||
}
|
}
|
||||||
if (file_exists(CORE_PATH . '/../Client/web/')) {
|
if (file_exists(CORE_PATH . '/../Client/web/')) {
|
||||||
dirDel(CORE_PATH . '/../Client/web/');
|
Deldir(CORE_PATH . '/../Client/web/');
|
||||||
} else {
|
} else {
|
||||||
Log::debug('Client frontend already deleted!');
|
Log::debug('Client frontend already deleted!');
|
||||||
}
|
}
|
||||||
if (file_exists(CORE_PATH . '/../Shift/web/')) {
|
if (file_exists(CORE_PATH . '/../Shift/web/')) {
|
||||||
dirDel(CORE_PATH . '/../Shift/web/');
|
Deldir(CORE_PATH . '/../Shift/web/');
|
||||||
} else {
|
} else {
|
||||||
Log::debug('Shift frontend already deleted!');
|
Log::debug('Shift frontend already deleted!');
|
||||||
}
|
}
|
||||||
if (file_exists(CORE_PATH . '/../Report/web/')) {
|
if (file_exists(CORE_PATH . '/../Report/web/')) {
|
||||||
dirDel(CORE_PATH . '/../Report/web/');
|
Deldir(CORE_PATH . '/../Report/web/');
|
||||||
} else {
|
} else {
|
||||||
Log::debug('Report frontend already deleted!');
|
Log::debug('Report frontend already deleted!');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateReportCategoriesTable extends Migration {
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up() {
|
||||||
|
if (!Schema::hasTable('report_categories')) {
|
||||||
|
Schema::create('report_categories', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('name', 255)->nullable();
|
||||||
|
$table->integer('code')->nullable();
|
||||||
|
$table->integer('is_history')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down() {
|
||||||
|
Schema::table('report_categories', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
15
models/Menu.php
Normal file
15
models/Menu.php
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Component\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class Menu extends Model {
|
||||||
|
protected $table = 'menu';
|
||||||
|
/**
|
||||||
|
* The attributes that aren't mass assignable.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $guarded = [];
|
||||||
|
}
|
||||||
@@ -6,4 +6,10 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
|
|
||||||
class Modifier extends Model {
|
class Modifier extends Model {
|
||||||
protected $table = 'modifiers';
|
protected $table = 'modifiers';
|
||||||
|
/**
|
||||||
|
* The attributes that aren't mass assignable.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $guarded = [];
|
||||||
}
|
}
|
||||||
15
models/ReportCategories.php
Normal file
15
models/ReportCategories.php
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Component\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class ReportCategories extends Model {
|
||||||
|
protected $table = 'report_categories';
|
||||||
|
/**
|
||||||
|
* The attributes that aren't mass assignable.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $guarded = [];
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
[info]
|
[info]
|
||||||
name=V1
|
name=V1
|
||||||
version=2.18
|
version=2.19
|
||||||
[build]
|
[build]
|
||||||
version=2.18
|
version=2.19
|
||||||
|
|||||||
Reference in New Issue
Block a user