1 line
5.6 KiB
JavaScript
1 line
5.6 KiB
JavaScript
import{a as e,d as t,i as n,s as r}from"./decimal-D3bp1pbs.js";import{h as i}from"./sql-C69Jo4HU.js";import{C as a}from"./index-CAPJG_im.js";import{a as o,i as s,r as c}from"./pricingScaleDetail-CuzzWQVd.js";import{t as l}from"./pricingMethodTotals-DHJf6v89.js";import{a as u,i as d,l as f,n as p,r as m,s as h,t as g}from"./pricingScaleLink-BNsm4Fxd.js";import{n as _,t as v}from"./xmFactorDefaults-yPGPQ25R.js";var y={excludeInvestmentCostAndAreaRows:!0},b=t=>t.some(e=>typeof e.budgetFee==`number`&&Number.isFinite(e.budgetFee))?n(e(t,e=>e.budgetFee??null),2):null,x=e=>new Set((e||[]).map(e=>String(e||``).trim()).filter(Boolean)),S=e=>{if(String(e.id||``).startsWith(`task-none-`))return null;let t=e.budgetAdoptedUnitPrice,i=e.conversion,a=e.workload;return typeof t!=`number`||!Number.isFinite(t)||typeof i!=`number`||!Number.isFinite(i)||typeof a!=`number`||!Number.isFinite(a)?null:n(r(t).mul(i).mul(a),2)},C=e=>{if(String(e.id||``).startsWith(`task-none-`))return null;let t=e.consultCategoryFactor,i=S(e);return i==null||typeof t!=`number`||!Number.isFinite(t)?null:n(r(i).mul(t),2)},w=t=>t.some(e=>typeof e.serviceFee==`number`&&Number.isFinite(e.serviceFee))?n(e(t,e=>e.serviceFee??null),2):null,T=e=>i(e)?.onlyCostScale===!0,E=(e,t,n)=>{if(n?.bypassFilter||!t||t.size===0)return!0;let r=f(e);return!!(r&&t.has(r))},D=async e=>{let t=a(),n=await t.loadServicePricingMethodState(e.contractId,e.serviceId,e.method);if(!n?.detailRows?.length)return 0;let r=!1,i=0,l=n.detailRows.length===1||e.method===`investScale`&&T(e.serviceId),f=n.detailRows.map(t=>{let n=e.method===`investScale`?`cost`:`area`;if(!E(t,e.changedRowIds,{bypassFilter:l}))return t;let a={...t},f=u(a,e.sourceRowMap,e.sourceRowIdMap),p=d(a,e.projectTotals);if(n===`cost`){let e=l?p.amount:typeof f?.amount==`number`?f.amount:null;a.amount=c(a.amount,e)?a.amount:e}else{let e=l?p.landArea:typeof f?.landArea==`number`?f.landArea:null;a.landArea=c(a.landArea,e)?a.landArea:e}let m=o(a,n);return s(t,m,n)?t:(r=!0,i+=1,m)});return r?(t.setServicePricingMethodState(e.contractId,e.serviceId,e.method,{detailRows:f,projectCount:n.projectCount??null},{force:!0}),await M({contractId:e.contractId,serviceId:e.serviceId,field:e.method,value:b(f)}),i):0};const O=async(e,n)=>{let r=a(),i=t();await r.loadContract(e);let o=r.getContractState(e),s=Array.from(new Set((o?.selectedIds||[]).map(e=>String(e||``).trim()).filter(Boolean))),c=n?.changedRowIds?.length?h(n.changedRowIds):void 0;if(s.length===0||c&&c.size===0)return{updatedServiceCount:0,updatedMethodCount:0,updatedRowCount:0};await l({contractId:e,serviceIds:s,options:y});let u=await i.getItem(`ht-info-v3-${e}`),d=Array.isArray(u?.detailRows)?u.detailRows:[],f=p(d),_=g(d),v=m(d,u?.totalAmount),b=new Set,x=0,S=0;for(let t of s){let n=await D({contractId:e,serviceId:t,method:`investScale`,sourceRowMap:f,sourceRowIdMap:_,projectTotals:v,changedRowIds:c});n>0&&(b.add(t),x+=1,S+=n);let r=await D({contractId:e,serviceId:t,method:`landScale`,sourceRowMap:f,sourceRowIdMap:_,projectTotals:v,changedRowIds:c});r>0&&(b.add(t),x+=1,S+=r)}return{updatedServiceCount:b.size,updatedMethodCount:x,updatedRowCount:S}};var k=async e=>{let t=a(),n=await t.loadServicePricingMethodState(e.contractId,e.serviceId,e.method);if(!n?.detailRows?.length)return 0;let r=!1,i=0,l=e.method===`investScale`?`cost`:`area`,u=n.detailRows.map(t=>{let n={...t},a=!1;if(e.syncConsultFactor&&!c(n.consultCategoryFactor,e.consultFactor)&&(n.consultCategoryFactor=e.consultFactor,a=!0),e.majorChangedRowIds?.size){let t=f(n);if(e.majorChangedRowIds.has(t)){let r=e.majorFactorMap.get(t)??null;c(n.majorFactor,r)||(n.majorFactor=r,a=!0)}}if(!a)return t;let u=o(n,l);return s(t,u,l)?t:(r=!0,i+=1,u)});return r?(t.setServicePricingMethodState(e.contractId,e.serviceId,e.method,{detailRows:u,projectCount:n.projectCount??null},{force:!0}),await M({contractId:e.contractId,serviceId:e.serviceId,field:e.method,value:b(u)}),i):0},A=async e=>{let t=a(),n=await t.loadServicePricingMethodState(e.contractId,e.serviceId,`workload`);if(!n?.detailRows?.length)return 0;let r=!1,i=0,o=n.detailRows.map(t=>{let n={...t},a=!1;c(n.consultCategoryFactor,e.consultFactor)||(n.consultCategoryFactor=e.consultFactor,a=!0);let o=S(n),s=C(n);return c(n.basicFee,o)||(n.basicFee=o,a=!0),c(n.serviceFee,s)||(n.serviceFee=s,a=!0),a?(r=!0,i+=1,n):t});return r?(t.setServicePricingMethodState(e.contractId,e.serviceId,`workload`,{detailRows:o,projectCount:n.projectCount??null},{force:!0}),await M({contractId:e.contractId,serviceId:e.serviceId,field:`workload`,value:w(o)}),i):0};const j=async(e,t)=>{let n=a();await n.loadContract(e);let r=n.getContractState(e),i=Array.from(new Set((r?.selectedIds||[]).map(e=>String(e||``).trim()).filter(Boolean)));if(i.length===0)return{updatedServiceCount:0,updatedMethodCount:0,updatedRowCount:0};let o=x(t?.consultChangedServiceIds),s=h(t?.majorChangedRowIds);if(o.size===0&&s.size===0)return{updatedServiceCount:0,updatedMethodCount:0,updatedRowCount:0};let[c,l]=await Promise.all([v(`ht-consult-category-factor-v1-${e}`),_(`ht-major-factor-v1-${e}`)]),u=0,d=0,f=new Set;for(let t of i){let n=o.has(t),r=s.size>0;if(!n&&!r)continue;let i=c.get(t)??null,a=await k({contractId:e,serviceId:t,method:`investScale`,syncConsultFactor:n,consultFactor:i,majorChangedRowIds:r?s:void 0,majorFactorMap:l});a>0&&(f.add(t),u+=1,d+=a);let p=await k({contractId:e,serviceId:t,method:`landScale`,syncConsultFactor:n,consultFactor:i,majorChangedRowIds:r?s:void 0,majorFactorMap:l});if(p>0&&(f.add(t),u+=1,d+=p),n){let n=await A({contractId:e,serviceId:t,consultFactor:i});n>0&&(f.add(t),u+=1,d+=n)}}return{updatedServiceCount:f.size,updatedMethodCount:u,updatedRowCount:d}},M=async e=>a().updatePricingField(e);export{O as n,j as t}; |