Синхронизация количества для заявок на услуги#
Используется для синхронизации количества в объектах потребности и проводках закупок с суммой без НДС из позиции заявки. Применяется для заявок на услуги, где объем определяется финансово. При наличии связи с договором также пересчитывает спецификацию.
Место применения: Сервис > Инструменты > Выполнить JEXL-скрипт
Тип: JEXL-скрипт
const avRow = sql(`
select det.id as iddet
,n.id as idneedobj
,pt.id as idpurchtrans
from Prs_PurchReqDet det
join Prs_PurchReqVer ver on ver.id = det.idPurchReqVer
join Prs_PurchReq req on req.id = ver.idPurchReq
join Prs_NeedObj n on det.idPurchReqPos = getGidId(n.gidDetNeed)
join Prs_PurchTrans pt on pt.idNeedObj = n.id
join Btk_ObjectType ot on req.idObjectType = ot.id
where ot.sCode = 'Prs_PurchReqCC'
and coalesce(det.nPriceRate, 0) <> 0
order by det.id
`).asList();
for (r : avRow) {
var ropDet = Prs_PurchReqDetApi.load(r.iddet);
var ropNeedObj = Prs_NeedObjApi.load(r.idneedobj);
var ropPurchTrans = Prs_PurchTransApi.load(r.idpurchtrans);
if (parseIdClass(ropPurchTrans.gidSrcDetObj) == Cnt_ContractSpecApi.idClass()) {
// Обновляем объект потребности, а так же проводку
if (ropDet.nTotalSumNoTax != ropNeedObj.nQtyBase) {
Prs_NeedObjApi.setnQtyBase(ropNeedObj, ropDet.nTotalSumNoTax);
}
if (ropDet.nTotalSumNoTax != ropPurchTrans.nQtyBase) {
Prs_PurchTransApi.setnQtyBase(ropPurchTrans, ropDet.nTotalSumNoTax);
// Обновляем позицию спецификации
var ropCntSpec = Cnt_ContractSpecApi.loadByGid(ropPurchTrans.gidSrcDetObj);
Prs_ContractPkg.recalcQtyByPurchTrans(ropCntSpec);
}
}
session.flush();
};
session.commit();