Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- create definer = yii_doc@localhost trigger sklad_date
- before update
- on __return_registry
- for each row
- BEGIN
- -- sklad_date и skladprihod_date
- IF (
- (OLD.sklad_date IS NOT NULL && NEW.sklad_date IS NULL)
- || (OLD.sklad_date IS NULL && NEW.sklad_date IS NOT NULL)
- || (NEW.sklad_date != OLD.sklad_date)
- ) THEN
- signal sqlstate '45000' set message_text = 'Ошибка: нельзя редактировать поле sklad_date';
- END IF;
- IF (NEW.kol_storage IS NOT NULL && OLD.kol_storage IS NULL) THEN
- SET NEW.storage_user = USER();
- END IF;
- IF (NEW.kol_supplier IS NOT NULL && OLD.kol_supplier IS NULL) THEN
- SET NEW.return_user = USER();
- END IF;
- IF (
- (OLD.skladprihod_date IS NOT NULL && NEW.skladprihod_date IS NULL)
- || (OLD.skladprihod_date IS NULL && NEW.skladprihod_date IS NOT NULL)
- || (NEW.skladprihod_date != OLD.skladprihod_date)
- ) THEN
- signal sqlstate '45000' set message_text = 'Ошибка: нельзя редактировать поле skladprihod_date';
- END IF;
- IF (
- (SUBSTRING_INDEX(CURRENT_USER(), "@", 1) != "sklad_chigakovskiy"
- AND SUBSTRING_INDEX(CURRENT_USER(), "@", 1) != "manager_muz"
- AND SUBSTRING_INDEX(CURRENT_USER(), "@", 1) != "Sklad_zab"
- AND SUBSTRING_INDEX(CURRENT_USER(), "@", 1) != "makeev"
- AND SUBSTRING_INDEX(CURRENT_USER(), "@", 1) != "zakupki_valik"
- AND SUBSTRING_INDEX(CURRENT_USER(), "@", 1) != "yii_doc"
- )
- && ((OLD.sklad_kol IS NULL && NEW.sklad_kol IS NOT NULL) || (NEW.sklad_kol != OLD.sklad_kol))
- ) THEN
- signal sqlstate '45000' set message_text = 'Ошибка: нельзя редактировать (НЕТ ПРАВ) поле sklad_kol';
- END IF;
- IF (OLD.sklad_date IS NULL AND NEW.sklad_kol IS NOT NULL) THEN
- SET NEW.sklad_date = NOW();
- END IF;
- IF (OLD.skladprihod_date IS NULL AND NEW.skladprihod_kol IS NOT NULL) THEN
- SET NEW.skladprihod_date = NOW();
- END IF;
- -- запрет ручного редактирования date_supplier
- IF (NEW.date_supplier<>OLD.date_supplier || (NEW.date_supplier IS NULL && OLD.date_supplier IS NOT NULL)) THEN
- signal sqlstate '45000' set message_text = 'Ошибка: нельзя редактировать поле date_supplier';
- END IF;
- IF NEW.kol_return < NEW.kol_storage THEN
- signal sqlstate '45000' set message_text = 'Ошибка: кол-во товаров на складе не может превышать кол-во возвратов';
- END IF;
- IF NEW.kol_storage < NEW.kol_supplier THEN
- signal sqlstate '45000' set message_text = 'Ошибка: кол-во возвратов поставщику не может превышать кол-во товаров на складе';
- END IF;
- IF NOT (NEW.diff_postav_return <=> OLD.diff_postav_return) THEN
- SET NEW.diff_postav_return_last_update = NOW();
- END IF;
- IF (NEW.kol_return > 0 AND NEW.date_return IS NULL) THEN
- SET NEW.date_return = NOW();
- END IF;
- IF (NEW.kol_storage IS NOT NULL AND OLD.kol_storage IS NULL) THEN
- SET NEW.date_storage = NOW();
- INSERT INTO yii_doc.return_registry_log (old_kol_storage, new_kol_storage, date, user) VALUES (OLD.kol_storage, NEW.kol_storage, NOW(), SYSTEM_USER());
- END IF;
- IF ((MONTH(NOW())=MONTH(OLD.date_supplier) AND YEAR(NOW()) = YEAR(OLD.date_supplier)) || (OLD.date_supplier IS NULL)) THEN
- IF !(NEW.kol_supplier <=> OLD.kol_supplier) THEN
- SET NEW.date_supplier = NOW();
- INSERT INTO return_registry_log (old_kol_supplier, new_kol_supplier, date, user, invoice_id, fin_in_id)
- VALUES (OLD.kol_supplier, NEW.kol_supplier, NOW(), SYSTEM_USER(),NEW.invoice_fin_number,NEW.fin_in_id);
- END IF;
- ELSE
- IF !(NEW.kol_supplier <=> OLD.kol_supplier) THEN
- SET NEW.date_supplier_correction = NOW();
- END IF;
- END IF;
- INSERT INTO operblock_logs.return_registry_log (
- `id`
- , `return_type`
- , `invoice_fin_number`
- , `fin_in_id`
- , `kol_return`
- , `kol_storage`
- , `kol_supplier`
- , `date_return`
- , `date_storage`
- , `date_supplier`
- , `invoice_return_id`
- , `remark`
- , `nova_poshta_number`
- , `num_naklad`
- , `date_naklad`
- , `diff_postav_return`
- , `guarantee_status`
- , `guarantee_date`
- , `guarantee_remark`
- , `repay_period`
- , `packaging`
- , `completeness`
- , `installation`
- , `vin_code_selection`
- , `log_event`
- , `log_user`
- , `log_date`
- , `sklad_kol`
- , `skladprihod_kol`
- , `sklad_date`
- , `skladprihod_date`
- )
- VALUES (
- NEW.id
- , NEW.return_type
- , NEW.invoice_fin_number
- , NEW.fin_in_id
- , NEW.kol_return
- , NEW.kol_storage
- , NEW.kol_supplier
- , NEW.date_return
- , NEW.date_storage
- , NEW.date_supplier
- , NEW.invoice_return_id
- , NEW.remark
- , NEW.nova_poshta_number
- , NEW.num_naklad
- , NEW.date_naklad
- , NEW.diff_postav_return
- , NEW.guarantee_status
- , NEW.guarantee_date
- , NEW.guarantee_remark
- , NEW.repay_period
- , NEW.packaging
- , NEW.completeness
- , NEW.installation
- , NEW.vin_code_selection
- , 'UPDATE'
- , USER()
- , NOW()
- , NEW.sklad_kol
- , NEW.skladprihod_kol
- , NEW.sklad_date
- , NEW.skladprihod_date
- );
- SET @new_kol_storage = IF(NEW.kol_storage IS NOT NULL, NEW.kol_storage, 0);
- SET @old_kol_storage = IF(OLD.kol_storage IS NOT NULL, OLD.kol_storage, 0);
- IF @old_kol_storage <> @new_kol_storage AND NEW.return_type NOT IN (5, 6) THEN
- SET @fin_supplier := (
- SELECT f.supplier_id
- FROM fin.fin_in f
- WHERE f.id = NEW.fin_in_id
- );
- -- Если витрина
- IF @fin_supplier = 24 THEN
- SET @return_count = (@new_kol_storage - @old_kol_storage);
- SET @prices_all_id = (
- SELECT
- op.price_all_id
- FROM fin.fin_in f
- LEFT JOIN yii_doc.order_product op ON op.id = f.product_id
- WHERE f.id = NEW.fin_in_id
- );
- IF (@return_count != 0) THEN
- INSERT INTO yii_doc.vitrina_return_product (pa_id, return_registry_id, count)
- VALUES (@prices_all_id, NEW.id, @return_count);
- END IF;
- END IF;
- END IF;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement