Создание заявок на выдачу книг

Создание заявок на выдачу книг#

Создает документы заявок на выдачу и их позиции для библиотечного модуля.

Место применения: Сервис > Инструменты > Выполнить JEXL-скрипт

Внимание

Скрипт привязан к объектам конкретного модуля и требует проверки на целевой базе. Перед запуском проверьте идентификаторы, SQL-запросы, API-классы и условия обработки.

Тип: JEXL-скрипт

var idvDepOwner = Bs_DepOwnerApi.findByMnemoCode("0000");
var idvPerson1 = Bs_PersonApi.findByMnemoCode("0200");
var idvPerson2 = Bs_PersonApi.findByMnemoCode("0201");
sql(`
	select regexp_replace(ssystemname, 'lbr', '') as "sNum"  
	from btk_module bm 
	where ssystemname like 'lbr__'
 `).foreach(function(r){
	var list = [["1", [["1", "978-5-04-121401-2"]]], ["2", [["1", "978-5-04-121401-2"]]], ["6", [["1", "978-5-389-06256-6"]]], ["5", [["1", "978-5-04-121401-2"], ["2", "978-5-389-06256-6"], ["3", "978-5-04-116677-9"], ["4", "978-5-17-063868-0"]]], ["7", [[null, null]]], ["4", [[null, null]]]];
	var apiDoc = Btk_ClassApi.getApiBySimpleClassName("Lbr" + r.sNum + "_OutOrder");
	var apiDet = Btk_ClassApi.getApiBySimpleClassName("Lbr" + r.sNum + "_OutOrderDet");
	var apiBook = Btk_ClassApi.getApiBySimpleClassName("Lbr" + r.sNum + "_Book");
	for (t : list){
		var svCode = t.0;
		var idv = apiDoc.findByMnemoCode(svCode);
		if(idv == null){
			var rop = apiDoc.insert();
			apiDoc.setsNumDoc(rop, svCode);
			apiDoc.setsNumDocBMs_dz(rop, 1B);
			apiDoc.setidLibrarian(rop, idvPerson1);
			apiDoc.setidPerson(rop, idvPerson2);
			apiDoc.setidDepOwner(rop, idvDepOwner);
			for (det : t.1) {
				var sDetCode = det.0;
				if(sDetCode != null){
					var ropDet = apiDet.insertByParent(rop);
					apiDet.setsNumber(ropDet, sDetCode);
					apiDet.setsNumberBMs_dz(ropDet, 1B);
					var idvBook = apiBook.findByMnemoCode(det.1);
					if(idvBook != null){
						apiDet.setidBook(ropDet, idvBook);
					}
					
				}
			}
			
		}
	}
	commit();
}) ;