tplus-components-touch 3.36.1 → 3.37.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/billSearch/index.js +157 -19
- package/dist/components/billSearch/index.js.map +1 -1
- package/dist/components/billSearch/index.less +6 -3
- package/dist/components/cloudPrint/api.js +85 -43
- package/dist/components/cloudPrint/api.js.map +1 -1
- package/dist/components/cloudPrint/printDispatch.js +211 -108
- package/dist/components/cloudPrint/printDispatch.js.map +1 -1
- package/dist/components/deliverySearch/index.js +1 -1
- package/dist/components/deliverySearch/index.js.map +1 -1
- package/dist/components/hotKey/localConfig.js +133 -14
- package/dist/components/hotKey/localConfig.js.map +1 -1
- package/dist/components/inventorySearch/tab.js +77 -67
- package/dist/components/inventorySearch/tab.js.map +1 -1
- package/dist/components/keyboard/numberButton_input.js +4 -2
- package/dist/components/keyboard/numberButton_input.js.map +1 -1
- package/dist/components/keyboard/onlyLetterButton2.less +35 -40
- package/dist/components/loading/loadingContent.js +1 -1
- package/dist/components/loading/loadingContent.js.map +1 -1
- package/dist/components/loading/style.less +7 -7
- package/dist/components/modalWraper/index.js +1 -1
- package/dist/components/modalWraper/index.js.map +1 -1
- package/dist/components/progressState/EmptyAndErrorView.js +4 -3
- package/dist/components/progressState/EmptyAndErrorView.js.map +1 -1
- package/dist/components/progressState/ProgressState.js +2 -1
- package/dist/components/progressState/ProgressState.js.map +1 -1
- package/dist/components/settlement/index.js +9 -0
- package/dist/components/settlement/index.js.map +1 -1
- package/dist/components/settlement/moreCzkTable/index.js +156 -0
- package/dist/components/settlement/moreCzkTable/index.js.map +1 -0
- package/dist/components/settlement/moreCzkTable/style.less +7 -0
- package/dist/components/settlement/settlement.js +752 -505
- package/dist/components/settlement/settlement.js.map +1 -1
- package/dist/components/settlement/settlement.less +104 -14
- package/dist/components/settlement/settlementStore.js +1096 -464
- package/dist/components/settlement/settlementStore.js.map +1 -1
- package/dist/components/ticon/iconfont/demo_index.html +49 -3
- package/dist/components/ticon/iconfont/iconfont.css +11 -3
- package/dist/components/ticon/iconfont/iconfont.js +6 -6
- package/dist/components/ticon/iconfont/iconfont.js.map +1 -1
- package/dist/components/ticon/iconfont/iconfont.json +14 -0
- package/dist/components/ticon/iconfont/iconfont.ttf +0 -0
- package/dist/components/ticon/iconfont/iconfont.woff +0 -0
- package/dist/components/ticon/iconfont/iconfont.woff2 +0 -0
- package/dist/components/touchScroll/index.js +6 -2
- package/dist/components/touchScroll/index.js.map +1 -1
- package/dist/components/touchTable/index.js +5 -4
- package/dist/components/touchTable/index.js.map +1 -1
- package/dist/components/touchTable/index.less +20 -13
- package/dist/index.js +14 -2
- package/dist/index.js.map +1 -1
- package/package.json +35 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["tplus-components-touch/components/settlement/settlementStore.js"],"names":["t","i18n","getFixedT","SettlementStore","paymode","dto","member","brefund","bquick","boriginReturn","newStyle","getCouponList","enumController","getEnumOj","PayStyle","Differentiate","couponApplyRule","CouponApplyRule","SHOWN_BY_CUSTOMER","coupon_code","promoVoucher","clearDjqs","reCalculationDjqs","boName","voucherId","ID","onlinePaymentAmount","OnlinePaymentAmount","promoLinks","currentMode","djqs","djq","checked","totalAmountWithTax","Math","Minus","TotalTaxAmount","redBlueFlagEnum","meMemberId","Idmember","storeFactorId","Idstore","voucherDetailList","RetailDetails","forEach","detailDTO","uuid","item","Code","detailBoName","voucherDetailId","productId","Idinventory","uomId","Idunit","productSpecId","ProductSpecId","isManualFreeGift","IsPresent","isListPriceIncludingTax","TaxFlag","IsManualChangePrice","bookingQuantity","BookingQuantity","listPrice","JSON","getCellValue","netAmountWithTax","Multiply","Quantity","taxRate","TaxRate","quantity","amountWithTax","RetailAmount","PromotionDetails","length","promotion","push","promoId","IdSalesPromotionDTO","promoRuleId","PromotionRuleId","method","timeout_skip","then","result","element","couponCode","name","tieredAmountResult","fromDate","dateMount","promoMethodEnum","discountPct","nominalAmount","id","condValue","promoDiscount","displayText","couponCategoryEnum","IsRepelWithPoints","thePaymodes","themode","paymentType","jfdx","Message","error","COUPON","SN","IsEnable","platform","isNewRetailBCPos","addDjq","calcDjqCheckValue","info","getSettleGift","billID","checkCoupon","sn","request","Uid","uid","StoreCode","Inventories","d","detail","IdInventory","Inventory","IdUnit","FreeItem0","FreeItem1","FreeItem2","FreeItem3","FreeItem4","FreeItem5","FreeItem6","FreeItem7","FreeItem8","FreeItem9","InventoryClassCodes","InventoryClass","Amount","amount","code","Title","ReduceAmount","StartAmount","LastTS","UMemberID","checkIntegralExchangeReturn","resolve","reject","param","refVoucherId","resp","expireIntegral","ModalWraper","confirm","className","title","content","cancelable","onOk","onCancel","PayMode","params","localStore","get","cloudPrintArguments","event","type","isIntegralExchange","setPaymodes","updateEvent","context","amounthandler","datasource","storeinfo","data","amountHandler","dataSource","storeInfo","viewModel","global","DealSingleRowAmountSettingProcessorBlock","execute","DealAmountSettingProcessorBlock","Member","setAmount","clean","initByOriginReturn","setModes","paymodes","p","mode","addPay","changeValue","paymethodId","console","log","checkList","RetailPaymentDetails","IdsettleStyle","SettleStyle","hyczk","okText","okType","newmode","genNewMode","authCode","PaymentCode","steadCashIntegral","SteadCashIntegral","overchargesAmount","OverchargesAmount","RetailCouponDetails","CouponCode","CouponTitle","ReductionAmount","EnableAmount","RetailStorageDetails","balanceAmount","BalanceStorage","StoragePaymentAmount","Password","balance","calcReserved","key","currentFocus","index","m","splice","addPayDirectly","IntegralSteadCashParams","BalanceTaxAmount","value","Integral","stores","user","options","v","errinfo","IdStore","storeID","storeCode","address","setMeStorageCardId","MeStorageCardId","setStorageCardNo","StorageCardNo","receivable","max","message","sum","total","cur","CheckMemberStorageProcessorBlock","String","isNullOrEmpty","checkReceived","parseFloat","nextInput","document","querySelector","select","SearchParams","Key","IsSingleMember","parse","Data","focus","promoCouponCode","doorsill","expired","unCheck","count","calcDjqValue","append","afterSetCurrentMode","setExchangable","MaxAmount","maxamount","notwithm","counter","exchangeRate","calDirection","value2","value3","order","setMaxAmount","q","Add","getViewItem","availableAmount","shouldSetValue","blur","isNaN","pay","pos","bTest","saveMember","offlineSys","generatorCode","save","retailSequenceUpload","DoNameList","DO_STORAGE_PRINT","StorageMutiSettleDetails","giveChange","xianjin","abs","StorageAmount","GiveChange","idSettleStyle","IdbankAccount","idBankAccount","DynamicPropertyKeys","DynamicPropertyValues","DataSource","Id","IPMSG","window","localStorage","handlePrint","czkSum","IsOrigReturn","OrigAmount","Idcurrency","idCurrency","ExchangeRate","IdMember","PromotionId","PromoCouponAllocatedId","RetailTypeEnum","IdbusiType","ReturnSourceId","cut","RetailOms","cip","query","setDtoID","RetailCode","Flag","val","exp","Date","setTime","endOf","valueOf","cookie","toGMTString","cookies","split","cookieObj","cook1","getAllCookies","cook2","memberId","hasOwnProperty","password","User","pwdEncrypt","pwd","setCookie","Success","action","newPass","newPassConfirm","warn","idstore","oldPassword","newPassword","successful","_this","getLoginInfo","_counter","onlineamount","settle","hotKey","a","o","received","q1","useLimitPerOrder","qList","ele","i","min","djq1","addDjqs","setCouponNum","rawbalance","settleStyleType","memberStoreCode","settlementCode","modes","SettleStyles","Name","isDefault","IsDefaultSettleStyle","isQuick","QuickSettleStyles","orderBy","offlineDisable","IdSettleStyle","IdBankAccount","Currency","CalDirection","observable","couponNum","MemberType","cardNo","CardCode","needPwd","IsNeedPwd","NeedModifyPassword","bonusPoints","BalanceIntegral","exchangable"],"mappings":"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","file":"settlementStore.js","sourcesContent":["import { observable, computed, action, autorun, runInAction } from 'mobx'\r\nimport { stores, i18n, localStore } from 'mutants-microfx';\r\nimport _find from 'lodash/find';\r\nimport _remove from 'lodash/remove';\r\nimport _each from 'lodash/each';\r\nimport _map from 'lodash/map';\r\nimport _join from 'lodash/join';\r\nimport _trim from 'lodash/trim';\r\nimport _filter from 'lodash/filter';\r\nimport _findIndex from 'lodash/findIndex';\r\nimport _findLastIndex from 'lodash/findLastIndex';\r\nimport _findKey from 'lodash/findKey';\r\nimport { PosInitData } from 'tplus-poslogin';\r\nimport { getFixedNumber } from './utils'\r\nimport {ccApi,tApi, User} from 'tplus-api';\r\nimport _clonedeep from 'lodash/cloneDeep';\r\nimport Message from '../message';\r\nimport { platform,enumController } from 'mutants-util';\r\nimport { printDispatch,DoNameList,ModalWraper } from 'tplus-components-touch'\r\nimport moment from \"moment\";\r\nimport _reduce from 'lodash/reduce';\r\n\r\nconst t = i18n.getFixedT(null, 'newretail');\r\n\r\nexport default class SettlementStore {\r\n paymode = null\r\n dto=null\r\n member=null\r\n brefund=false\r\n context\r\n bquick=false;\r\n amountHandler\r\n dataSource\r\n storeInfo\r\n updateEvent\r\n type\r\n boriginReturn=false\r\n newStyle=true//type==2\r\n billID\r\n constructor(){\r\n this.paymode= new PayMode()\r\n let params = localStore && localStore.get('cloudPrintArguments');\r\n if (params) this.cloudPrintArguments = params;\r\n this.newStyle=localStore && localStore.get('voucherDefaultPosMode')=='voucher';\r\n }\r\n\r\n initPaymodes(event,type,isIntegralExchange){\r\n this.isIntegralExchange = isIntegralExchange;\r\n this.paymode.setPaymodes(type,isIntegralExchange);\r\n this.updateEvent=event;\r\n }\r\n\r\n init(context,amounthandler,datasource,storeinfo,bquick,amount,type,data){\r\n this.newStyle=localStore && localStore.get('voucherDefaultPosMode')=='voucher';\r\n this.type=type;\r\n if(context){\r\n this.context=context;\r\n this.amountHandler=amounthandler;\r\n this.dataSource=datasource;\r\n this.storeInfo=storeinfo;\r\n this.dto=context.viewModel.data;\r\n runInAction(()=>{\r\n // 单品金额抹零\r\n if (global.DealSingleRowAmountSettingProcessorBlock) {\r\n global.DealSingleRowAmountSettingProcessorBlock.execute(this.dto);\r\n }\r\n // 成交金额抹零\r\n if (global.DealAmountSettingProcessorBlock) {\r\n global.DealAmountSettingProcessorBlock.execute(this.dto);\r\n }\r\n });\r\n // this.member=context.stores && context.stores.memberStore && context.stores.memberStore.member;\r\n this.member=this.dto.Member;//stores.selectMemberStore.selectMemberInfo;\r\n this.brefund=this.paymode.setAmount( this.dto.TotalTaxAmount ,this.dto.OnlinePaymentAmount );\r\n }else{\r\n this.brefund=this.paymode.setAmount( amount ,0 );\r\n this.dto=data;\r\n }\r\n this.paymode.clean();\r\n \r\n //this.dto.TotalTaxAmount<0;\r\n this.bquick=!!bquick;\r\n this.boriginReturn=JSON.getCellValue(this.dto, \"IsOriginalReturn\");\r\n if(this.boriginReturn){\r\n this.initByOriginReturn();\r\n }\r\n if(this.newStyle){\r\n this.setModes();\r\n }\r\n }\r\n\r\n setModes(){\r\n _each(this.paymode.paymodes,(p)=>{\r\n if(_findIndex(this.paymode.thePaymodes,(mode)=>{return p.paymentType==mode.paymentType})==-1){\r\n this.addPay(p.paymentType);\r\n }\r\n });\r\n if(!this.boriginReturn && this.paymode.thePaymodes.length>0){\r\n this.changeValue(this.paymode.thePaymodes[0].paymethodId,0,true);\r\n }\r\n }\r\n\r\n amountChanged(amount){\r\n if(this.type==1){\r\n this.brefund=this.paymode.setAmount( amount ,0 );\r\n }\r\n\r\n }\r\n\r\n @action queryPwd = (newPass, newPassConfirm) => {\r\n if (!newPass || !newPassConfirm) {\r\n return Message.warn('您还有未填写项');\r\n }\r\n if (newPass !== newPassConfirm) {\r\n return Message.warn('您两次输入的密码不一致');\r\n }\r\n let idstore = PosInitData('storeID');\r\n return ccApi({ \r\n Idstore: idstore,\r\n meMemberId: this.member.ID,\r\n oldPassword: null,\r\n newPassword: User.pwdEncrypt(newPassConfirm),\r\n dataSource:\"POS\"\r\n }, '/member/MeMemberWallet/setWalletPayPassword', false, false, { method: 'post', timeout_skip: true }).then((resp) => {\r\n if (resp.successful) {\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n @action\r\n initByOriginReturn(){\r\n const { PayStyle } = enumController.getEnumOj();\r\n const { isNewRetailBCPos } = platform || {};\r\n console.log(this.dto, 'dto==========');\r\n this.paymode.checkList = [];\r\n _each(this.dto.RetailPaymentDetails,(detail)=>{\r\n let themode=_find(this.paymode.paymodes,{'idSettleStyle':detail.IdsettleStyle});\r\n if (detail.SettleStyle.Code === PayStyle.hyczk && !themode) {\r\n ModalWraper.info({\r\n title: '温馨提示',\r\n content: '没有储值结算方式,请在后台添加储值余额结算方式。',\r\n okText:'确定',\r\n okType:'primary'\r\n });\r\n }\r\n if(themode && themode.paymentType && themode.paymentType!=PayStyle.hyczk){\r\n let newmode={\r\n ...this.genNewMode(themode.paymentType,false,detail.Amount),\r\n authCode:detail.PaymentCode,\r\n steadCashIntegral:detail.SteadCashIntegral,\r\n overchargesAmount:detail.OverchargesAmount,\r\n boriginReturn:true\r\n };\r\n this.paymode.currentMode=newmode;\r\n if(themode.paymentType==PayStyle.djq){\r\n _each(this.dto.RetailCouponDetails,(djq)=>{\r\n if (isNewRetailBCPos) {\r\n const { displayText, promoRuleId, dateMount, promoMethodEnum, discountPct, promoId, id } = djq || {};\r\n this.addDjq(djq.CouponCode, djq.CouponTitle, true, djq.ReductionAmount, djq.EnableAmount, djq.LastTS, true, false, \r\n this.dto.Idmember,\r\n dateMount,\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n null,\r\n id,\r\n true);\r\n return;\r\n }\r\n this.addDjq(djq.CouponCode, djq.CouponTitle, true, djq.ReductionAmount, djq.EnableAmount, djq.LastTS, true, false,);\r\n })\r\n }\r\n this.paymode.thePaymodes.push(newmode)\r\n }\r\n })\r\n _each(this.dto.RetailStorageDetails,(detail)=>{\r\n let balanceAmount = detail.Member.BalanceStorage;\r\n balanceAmount = balanceAmount - detail.StoragePaymentAmount;\r\n let newmode={\r\n ...this.genNewMode(PayStyle.hyczk,false,detail.StoragePaymentAmount),\r\n member:new Member(detail.Member),\r\n authCode:detail.Password,\r\n balance:balanceAmount,\r\n boriginReturn:true\r\n };\r\n this.paymode.thePaymodes.push(newmode)\r\n })\r\n this.paymode.calcReserved();\r\n }\r\n\r\n clean(){\r\n this.bquick=false;\r\n this.paymode.clean();\r\n }\r\n\r\n @action quickSettle(key){\r\n this.addPay(key);\r\n }\r\n\r\n //outer call\r\n //(type===PayStyle.hyczk || type===PayStyle.jfczk || type===PayStyle.jfdx || type===PayStyle.djq)\r\n @action changeFocusAndAddPay(type){\r\n const { PayStyle } = enumController.getEnumOj();\r\n this.paymode.currentFocus=type;\r\n if(this.paymode.currentMode){\r\n if(type==PayStyle.jfdx){\r\n if(this.newStyle){\r\n let index=_findIndex(this.paymode.thePaymodes,(m)=>{return m.paymentType==PayStyle.jfdx});\r\n this.paymode.thePaymodes.splice(index,1,this.paymode.currentMode);\r\n this.paymode.calcReserved();\r\n }else{\r\n this.addPayDirectly(this.paymode.currentMode);\r\n }\r\n \r\n //抵现积分\r\n tApi({IntegralSteadCashParams:{\r\n Idmember:this.paymode.currentMode.member.id,\r\n TotalTaxAmount:this.paymode.amount,\r\n BalanceTaxAmount: this.paymode.currentMode.value,\r\n }}, 'AA.DR.newRetailMember.CalculdateIntegralSteadCash', false, false).then((result)=>{\r\n this.paymode.currentMode.steadCashIntegral=result.Integral;\r\n this.paymode.currentMode.overchargesAmount=result.Amount-this.paymode.currentMode.value;\r\n });\r\n }else{\r\n this.addPayDirectly(this.paymode.currentMode);\r\n }\r\n }else{\r\n this.addPay(type);\r\n }\r\n }\r\n\r\n // 设置密码后更新会员信息\r\n @action updateMemberInfo = async (_this) => {\r\n const { IdStore, StoreCode } = this.getLoginInfo();\r\n const resp = await tApi({ Idmember: this.member.ID, IdStore, StoreCode }, 'chanjet.AA.DR.INewRetailMember.GetUmemberDTO', false, false);\r\n _this.member = resp;\r\n _this.paymode.currentMode.member.setStorageCardNo(resp.StorageCardNo);\r\n return Promise.resolve(resp);\r\n }\r\n\r\n getLoginInfo() {\r\n return stores.user.options.get('loginInfo');\r\n }\r\n\r\n loadCzk(v){\r\n if(_trim(v)===\"\"){\r\n runInAction(()=>{\r\n this.paymode.currentMode.member = new Member( null );\r\n this.paymode.currentMode.errinfo=\"请输入储值卡\";\r\n });\r\n return;\r\n }\r\n const IdStore=this.storeInfo.storeID;\r\n const StoreCode=this.storeInfo.storeCode;//_find(this.storeInfo.storeInfos,(store)=>{return store.ID==IdStore;}).Code;\r\n const { isNewRetailBCPos } = platform || {};\r\n let address = ''\r\n if (isNewRetailBCPos) {\r\n // address = '/member/memberProfile/FindByStorageCode/'+v;\r\n address = `/member/MeMemberWallet/FindByStorageCode`\r\n return ccApi({code:v}, address, false, false, { method: 'get', timeout_skip: true })\r\n .then((result)=>{\r\n let data=result.data;\r\n let m=data;\r\n const { isNewRetailBCPos } = platform || {};\r\n if (isNewRetailBCPos) {\r\n this.paymode && this.paymode.currentMode.member.setMeStorageCardId(m.MeStorageCardId);\r\n this.paymode && this.paymode.currentMode.member.setStorageCardNo(m.StorageCardNo);\r\n this.paymode && (this.paymode.currentMode.MeStorageCardId = m.MeStorageCardId);\r\n this.paymode && (this.paymode.currentMode.StorageCardNo = m.StorageCardNo);\r\n }\r\n if(!m || !m.ID){\r\n runInAction(()=>{this.paymode.currentMode.errinfo=\"无效的会员卡号\";});\r\n }\r\n else{\r\n runInAction(()=>{\r\n this.paymode.currentMode.errinfo=\"\";\r\n this.paymode.currentMode.member = new Member( m )\r\n this.paymode.currentMode.value=getFixedNumber(this.brefund?this.paymode.receivable:Math.max(this.paymode.receivable,0));\r\n this.updateEvent();\r\n let message='';\r\n const sum = _reduce(this.paymode.thePaymodes, (total, cur) => total + cur.value, 0)\r\n if (global.CheckMemberStorageProcessorBlock ) {\r\n message= CheckMemberStorageProcessorBlock.execute(m);\r\n }\r\n if (!String.isNullOrEmpty(message)) {\r\n this.paymode.currentMode.errinfo=message;\r\n }\r\n else if(this.checkReceived(this.paymode.currentMode,\"balance\")){\r\n this.paymode.currentMode.errinfo=\"余额不足\";\r\n }else if(this.paymode.amount>0 && parseFloat(this.paymode.amount) !== sum && this.paymode.currentMode.value==0){\r\n this.paymode.currentMode.errinfo=\"实收金额必须录入\";\r\n } else {\r\n // 查询成功后将焦点移入下一个输入框\r\n const nextInput = document.querySelector('.czk .received .input');\r\n nextInput && nextInput.select();\r\n }\r\n });\r\n }\r\n })\r\n } else {\r\n address = 'AA.DR.newRetailMember.SearchMember'\r\n return tApi({SearchParams:{Key:v,IsSingleMember:true,IdStore,StoreCode}}, address, false, false)\r\n .then((result)=>{\r\n let data=JSON.parse(result.Data);\r\n let m=data && data.length>0 && data[0];\r\n const { isNewRetailBCPos } = platform || {};\r\n if (isNewRetailBCPos) {\r\n this.paymode && this.paymode.currentMode.member.setMeStorageCardId(m.MeStorageCardId);\r\n this.paymode && this.paymode.currentMode.member.setStorageCardNo(m.StorageCardNo);\r\n this.paymode && (this.paymode.currentMode.MeStorageCardId = m.MeStorageCardId);\r\n this.paymode && (this.paymode.currentMode.StorageCardNo = m.StorageCardNo);\r\n }\r\n if(!m || !m.ID){\r\n runInAction(()=>{this.paymode.currentMode.errinfo=\"无效的会员卡号\";});\r\n }\r\n else{\r\n runInAction(()=>{\r\n this.paymode.currentMode.errinfo=\"\";\r\n this.paymode.currentMode.member = new Member( m )\r\n this.paymode.currentMode.value=getFixedNumber(this.brefund?this.paymode.receivable:Math.max(this.paymode.receivable,0));\r\n this.updateEvent();\r\n let message='';\r\n if (global.CheckMemberStorageProcessorBlock ) {\r\n message= CheckMemberStorageProcessorBlock.execute(data[0]);\r\n }\r\n if (!String.isNullOrEmpty(message)) {\r\n this.paymode.currentMode.errinfo=message;\r\n }\r\n else if(this.checkReceived(this.paymode.currentMode,\"balance\")){\r\n this.paymode.currentMode.errinfo=\"余额不足\";\r\n }else if(this.paymode.amount>0 && this.paymode.currentMode.value==0){\r\n this.paymode.currentMode.errinfo=\"实收金额必须录入\";\r\n } else {\r\n // 查询成功后将焦点移入下一个输入框\r\n const nextInput = document.querySelector('.czk .received .input');\r\n nextInput && nextInput.focus();\r\n }\r\n });\r\n }\r\n })\r\n }\r\n }\r\n getCouponList = coupon_code => {\r\n const { PayStyle, Differentiate } = enumController.getEnumOj();\r\n const couponApplyRule = PosInitData('CouponApplyRule');\r\n const { CouponApplyRule } = enumController.getEnumOj();\r\n if((couponApplyRule == CouponApplyRule.SHOWN_BY_CUSTOMER && !!coupon_code) || couponApplyRule != CouponApplyRule.SHOWN_BY_CUSTOMER){\r\n let dto = this.dto;\r\n let promoVoucher = {};\r\n this.paymode.clearDjqs();\r\n this.paymode.reCalculationDjqs();\r\n // promoVoucher.bizDate = dto.VoucherDate;\r\n // promoVoucher.bizDate = new Date().getTime();\r\n promoVoucher.coupon_code = coupon_code || \"\";\r\n promoVoucher.boName = \"Retail\";\r\n promoVoucher.voucherId = dto.ID;\r\n let onlinePaymentAmount=0;\r\n if(dto.OnlinePaymentAmount)\r\n {\r\n onlinePaymentAmount=dto.OnlinePaymentAmount;\r\n }\r\n promoVoucher.promoLinks = _filter(this.paymode.currentMode.djqs,djq=>djq.checked);\r\n promoVoucher.totalAmountWithTax =Math.Minus(dto.TotalTaxAmount,onlinePaymentAmount);\r\n promoVoucher.redBlueFlagEnum = \"BLUE\";\r\n promoVoucher.meMemberId = dto.Idmember;\r\n promoVoucher.storeFactorId = dto.Idstore;\r\n promoVoucher.voucherDetailList = [];\r\n dto.RetailDetails.forEach(item => {\r\n let detailDTO = {};\r\n detailDTO.uuid = item.Code;\r\n detailDTO.detailBoName = \"RetailDetail\";\r\n detailDTO.voucherDetailId = item.ID;\r\n detailDTO.productId = item.Idinventory;\r\n detailDTO.uomId = item.Idunit;\r\n detailDTO.productSpecId=item.ProductSpecId;\r\n detailDTO.isManualFreeGift = item.IsPresent;\r\n detailDTO.isListPriceIncludingTax = item.TaxFlag || true;\r\n detailDTO.IsManualChangePrice = item.IsManualChangePrice;\r\n // if(detailDTO.IsManualChangePrice)//如果是手工改价\r\n // {\r\n // detailDTO.listPrice = item.TaxPrice;\r\n // detailDTO.netAmountWithTax = item.TaxAmount;\r\n // }\r\n // else\r\n // {\r\n let bookingQuantity=0;\r\n if(item.BookingQuantity)\r\n {\r\n bookingQuantity=item.BookingQuantity;\r\n }\r\n detailDTO.listPrice = JSON.getCellValue(item, \"listPrice\");\r\n detailDTO.netAmountWithTax = Math.Multiply(detailDTO.listPrice,Math.Minus(item.Quantity,bookingQuantity));//item.TaxAmount;\r\n //} \r\n detailDTO.taxRate = item.TaxRate;\r\n detailDTO.quantity = item.Quantity;\r\n \r\n detailDTO.amountWithTax = item.RetailAmount;\r\n // 促销 start\r\n if(item.PromotionDetails && item.PromotionDetails.length != 0){\r\n let promoLinks = [];\r\n item.PromotionDetails.forEach((promotion)=>{\r\n promoLinks.push({\r\n promoId:promotion.IdSalesPromotionDTO,\r\n promoRuleId:promotion.PromotionRuleId\r\n })\r\n })\r\n if(promoLinks.length != 0) detailDTO.promoLinks = promoLinks;\r\n }\r\n // 促销 end\r\n promoVoucher.voucherDetailList.push(detailDTO);\r\n });\r\n \r\n return ccApi({\r\n ...promoVoucher\r\n }, 'promotion/PromoCalculate/findUsefulCouponPromoList', false, false,{method:'post',timeout_skip:true})\r\n .then((result)=>{\r\n if(result && result.length != 0 ){\r\n result.forEach((element)=>{\r\n const { couponCode, name, tieredAmountResult, fromDate , dateMount , promoMethodEnum , discountPct, nominalAmount,promoId,id} = element || {};\r\n const { condValue, promoDiscount,displayText,promoRuleId, couponCategoryEnum } = tieredAmountResult\r\n if (result.IsRepelWithPoints && _find(this.paymode.thePaymodes, (themode) => { return themode.paymentType == PayStyle.jfdx; })) {\r\n Message.error(`${Differentiate.COUPON}(${result.SN})不可与积分一起使用`);\r\n }\r\n else {\r\n let IsEnable = (couponCategoryEnum === 'RIGUP' || couponCategoryEnum === 'UN_MATCH' || couponCategoryEnum === \"PREPARING\" || couponCategoryEnum === 'PROMO_LIMITED' || couponCategoryEnum === 'COUPON_CONFLICT') ? false : true ;\r\n let { isNewRetailBCPos } = platform || {};\r\n this.addDjq(\r\n couponCode,\r\n name,\r\n IsEnable,\r\n promoMethodEnum == \"CASH_COUPON\"?nominalAmount: promoDiscount,\r\n condValue, \r\n null,\r\n false, \r\n !result.IsRepelWithPoints, \r\n dto.Idmember,\r\n dateMount,\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n couponCategoryEnum,\r\n id,\r\n true, 1)\r\n }\r\n })\r\n if(promoVoucher.coupon_code){\r\n this.paymode.calcDjqCheckValue(this.paymode.currentMode.djqs[0], this.dto, 'single')\r\n }\r\n }else{\r\n if (promoVoucher.coupon_code) {\r\n Message.info(`${Differentiate.COUPON}号不存在!`);\r\n this.getCouponList();\r\n } else {\r\n Message.info(`没有找到可使用的${Differentiate.COUPON}!`)\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n getSettleGift = () => {\r\n return ccApi({ }, `/marketingtool/paygift/executeRightsForPos/${this.billID}`, false, false, { method: 'get', timeout_skip: true });\r\n }\r\n\r\n checkCoupon = async (sn) => {\r\n let { isNewRetailBCPos } = platform || {};\r\n if (isNewRetailBCPos) {\r\n return await this.getCouponList(sn, 'sinlge');\r\n } else {\r\n const { PayStyle, Differentiate } = enumController.getEnumOj();\r\n return tApi({request:{\r\n Uid:this.paymode.currentMode.member.uid || '',\r\n SN:sn,\r\n StoreCode:this.dto.Idstore,\r\n Inventories:_map(_filter(this.dto.RetailDetails,(d)=>{return d.Quantity>0 && !d.IsPresent}),(detail)=>{return {\r\n IdInventory:detail.Inventory.ID,\r\n IdUnit:detail.Idunit,\r\n Code:detail.Inventory.Code,\r\n FreeItem0:JSON.getCellValue(detail,\"freeitem0\"),\r\n FreeItem1:JSON.getCellValue(detail,\"freeitem1\"),\r\n FreeItem2:JSON.getCellValue(detail,\"freeitem2\"),\r\n FreeItem3:JSON.getCellValue(detail,\"freeitem3\"),\r\n FreeItem4:JSON.getCellValue(detail,\"freeitem4\"),\r\n FreeItem5:JSON.getCellValue(detail,\"freeitem5\"),\r\n FreeItem6:JSON.getCellValue(detail,\"freeitem6\"),\r\n FreeItem7:JSON.getCellValue(detail,\"freeitem7\"),\r\n FreeItem8:JSON.getCellValue(detail,\"freeitem8\"),\r\n FreeItem9:JSON.getCellValue(detail,\"freeitem9\"),\r\n }}),\r\n // inventoryCodes:_join(_map(this.dto.RetailDetails,(detail)=>{return detail.Inventory.Code;}),','),\r\n InventoryClassCodes:_join(_map(_filter(this.dto.RetailDetails,(d)=>{return d.Quantity>0}),(detail)=>{return (detail.Inventory.InventoryClass||{Code:''}).Code;}),','),\r\n Amount:this.paymode.amount\r\n }}, 'chanjet.AA.DR.coupon.CheckCoupon', false, false)\r\n .then((result)=>{\r\n if(_find(this.paymode.currentMode.djqs,(djq)=>{return djq.code==result.SN})){\r\n Message.info(`${Differentiate.COUPON}已添加`);\r\n }else if(result.IsRepelWithPoints && _find(this.paymode.thePaymodes,(themode)=>{return themode.paymentType==PayStyle.jfdx;})){\r\n Message.error(`${Differentiate.COUPON}(${result.SN})不可与积分一起使用`);\r\n }\r\n else{\r\n this.addDjq(\r\n result.SN,\r\n result.Title,\r\n result.ReduceAmount,\r\n result.StartAmount,\r\n result.LastTS,\r\n false,\r\n !result.IsRepelWithPoints,\r\n result.UMemberID)\r\n }\r\n \r\n })\r\n }\r\n }\r\n @action addDjq(\r\n promoCouponCode,\r\n name,\r\n IsEnable,\r\n amount,\r\n doorsill,\r\n LastTS,\r\n checked,\r\n IsRepelWithPoints,\r\n UMemberID,\r\n expired,\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n couponCategoryEnum,\r\n id,\r\n unCheck,count\r\n ){\r\n let djq={\r\n code: promoCouponCode,\r\n promoCouponCode,\r\n name,\r\n IsEnable,\r\n amount,\r\n doorsill,//:\"无门槛\"\r\n LastTS,\r\n checked,\r\n IsRepelWithPoints,\r\n UMemberID,\r\n expired, //还剩多少过期\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n couponCategoryEnum,\r\n id,\r\n count: (count === 1 && (couponCategoryEnum === 'RIGUP' || couponCategoryEnum === 'UN_MATCH' || couponCategoryEnum === \"PREPARING\" || couponCategoryEnum === 'PROMO_LIMITED' || couponCategoryEnum === 'COUPON_CONFLICT') ? 1 : null)\r\n };\r\n this.paymode.currentMode.djqs.push(\r\n djq\r\n );\r\n // let copyData = _clonedeep(this.data[targetIndex]);\r\n !unCheck && !this.boriginReturn && this.paymode.calcDjqValue(djq);\r\n }\r\n\r\n setCurrentMode(id,type,append){\r\n const { PayStyle } = enumController.getEnumOj();\r\n const mode=_find(this.paymode.thePaymodes,{paymethodId:id});\r\n if(mode){\r\n this.paymode.currentMode=mode;\r\n if(this.newStyle){\r\n this.afterSetCurrentMode(type);\r\n }\r\n }else{\r\n this.paymode.currentMode=this.genNewMode(type,append);\r\n this.afterSetCurrentMode(type);\r\n }\r\n }\r\n afterSetCurrentMode(type){\r\n const { PayStyle } = enumController.getEnumOj();\r\n if(type==PayStyle.djq){\r\n this.paymode.calcDjqValue();\r\n }else if(type==PayStyle.jfdx){\r\n //获取可兑换的金额\r\n if(this.newStyle){\r\n const themode=_find(this.paymode.thePaymodes,{paymentType:PayStyle.jfdx});\r\n if(themode && parseFloat(themode.value||0)!=0){\r\n this.paymode.currentMode.value=themode.value;\r\n }\r\n }\r\n \r\n tApi({IntegralSteadCashParams:{\r\n Idmember:this.paymode.currentMode.member.id,\r\n TotalTaxAmount:this.paymode.amount,\r\n BalanceTaxAmount:this.paymode.amount,\r\n }}, 'AA.DR.newRetailMember.CalculdateIntegralSteadCash', false, false).then((result)=>{\r\n this.paymode.currentMode.member.setExchangable(result.MaxAmount);\r\n this.updateEvent();\r\n if(this.checkReceived(this.paymode.currentMode,\"exchangable\")){\r\n runInAction(()=>{this.paymode.currentMode.errinfo='余额不足'})\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n\r\n checkReceived(mode,name){\r\n return !this.brefund && parseFloat(mode.value)>parseFloat(mode.maxamount || mode.member[name]||0);\r\n }\r\n\r\n genNewMode(type,notwithm,v){\r\n const { PayStyle } = enumController.getEnumOj();\r\n let value=getFixedNumber(v || (this.brefund?this.paymode.receivable:Math.max(this.paymode.receivable,0)));\r\n let themode=_find(this.paymode.paymodes,{'paymentType':type});\r\n const mode = observable({\r\n paymethodId:this.paymode.counter,\r\n name:themode.name,\r\n exchangeRate:themode.exchangeRate,\r\n calDirection:themode.calDirection,\r\n value,\r\n value2:getFixedNumber(themode.calDirection==\"88\"?value / themode.exchangeRate:(value * themode.exchangeRate)),\r\n value3:value,\r\n order:this.paymode.thePaymodes.length+1,\r\n paymentType:type,\r\n djqs:[],\r\n member:new Member(!notwithm?this.member:null),\r\n authCode:'',\r\n steadCashIntegral:null,\r\n errinfo:'',\r\n maxamount:this.paymode.amount,\r\n });\r\n if(type==PayStyle.hyczk){\r\n if(!mode.member.id || !mode.member.StorageCardNo){\r\n runInAction(()=>{mode.errinfo='未录入储值卡'})\r\n }else if(this.checkReceived(mode,\"balance\")){\r\n runInAction(()=>{mode.errinfo='余额不足'})\r\n }\r\n\r\n }\r\n if(type==PayStyle.hyczk || type==PayStyle.jfdx || type==PayStyle.djq){\r\n this.setMaxAmount(type,mode);\r\n }\r\n console.log(mode);\r\n return mode;\r\n }\r\n\r\n setMaxAmount(type,mode){\r\n const { PayStyle } = enumController.getEnumOj();\r\n let sum=0;\r\n if(type==PayStyle.hyczk){\r\n _each(_filter(this.paymode.thePaymodes,(m)=>{return m.paymentType==type;}),(q)=>{\r\n sum=Math.Add(sum,q.value);\r\n });\r\n }else if(type==PayStyle.djq || type==PayStyle.jfdx){\r\n _each(_filter(this.paymode.thePaymodes,(m)=>{return m.paymentType==PayStyle.djq || m.paymentType==PayStyle.jfdx;}),(q)=>{\r\n sum=Math.Add(sum,q.value);\r\n });\r\n }\r\n\r\n this.amountHandler && this.amountHandler(type).then(()=>{\r\n runInAction(()=>{\r\n mode.maxamount=getFixedNumber(Math.Minus(this.context.viewModel.getViewItem('Voucher').availableAmount,sum));\r\n this.updateEvent();\r\n })\r\n })\r\n }\r\n\r\n @action changeFocusOnly(type){\r\n this.paymode.currentFocus=type;\r\n // 获取焦点时带入剩余的值\r\n // let mode=_find(this.paymode.thePaymodes,{'paymentType':type});\r\n // if(mode && this.isIntegralExchange){\r\n // const shouldSetValue =getFixedNumber(parseFloat(this.paymode.receivable) + parseFloat(mode.value));\r\n // mode.value = shouldSetValue;\r\n // mode.value2 = getFixedNumber(mode.calDirection==\"88\"?shouldSetValue / mode.exchangeRate:(shouldSetValue * mode.exchangeRate));\r\n // mode.value3 = shouldSetValue;\r\n // this.paymode.calcReserved();\r\n // }\r\n }\r\n\r\n @action changeClickFocusOnly(type) {\r\n this.paymode.currentFocus=type;\r\n // 获取焦点时带入剩余的值\r\n let mode=_find(this.paymode.thePaymodes,{'paymentType':type});\r\n if(mode){\r\n const shouldSetValue =getFixedNumber(parseFloat(this.paymode.receivable) + parseFloat(mode.value));\r\n mode.value = shouldSetValue;\r\n mode.value2 = getFixedNumber(mode.calDirection==\"88\"?shouldSetValue / mode.exchangeRate:(shouldSetValue * mode.exchangeRate));\r\n mode.value3 = shouldSetValue;\r\n this.paymode.calcReserved();\r\n }\r\n }\r\n\r\n @action changeValue(index,value,blur){\r\n let mode=_find(this.paymode.thePaymodes,{'paymethodId':index});\r\n let v=blur?getFixedNumber(value) : (isNaN(value)&&value!='-'?0.00:value);\r\n if(mode){\r\n if(mode.exchangeRate != 1){\r\n if(getFixedNumber(mode.calDirection==\"88\"?mode.value3 / mode.exchangeRate:(mode.value3 * mode.exchangeRate)) !=v){\r\n mode.value=getFixedNumber(mode.calDirection==\"88\"?v*mode.exchangeRate : (v / mode.exchangeRate));\r\n }\r\n else{\r\n mode.value=mode.value3;\r\n }\r\n mode.value2=v;\r\n }else{\r\n mode.value=v;\r\n mode.value2=v;\r\n }\r\n\r\n this.paymode.calcReserved();\r\n }\r\n }\r\n\r\n @action addPayDirectly(pay){\r\n const { PayStyle } = enumController.getEnumOj();\r\n if(!_find(this.paymode.thePaymodes,{paymethodId:pay.paymethodId})){\r\n let pos=this.paymode.thePaymodes.length;\r\n if(pay.paymentType==PayStyle.hyczk){\r\n let index=_findLastIndex(this.paymode.thePaymodes,(m)=>{return m.paymethodId!=pay.paymethodId && m.paymentType==PayStyle.hyczk});\r\n pos=index==-1?pos:(index+1);\r\n }\r\n // this.paymode.thePaymodes.push(pay);\r\n this.paymode.thePaymodes.splice(pos,0,pay);\r\n }\r\n this.paymode.calcReserved();\r\n }\r\n\r\n @action addPay(type){\r\n const { PayStyle } = enumController.getEnumOj();\r\n let pos=this.paymode.thePaymodes.length;\r\n if(type==PayStyle.hyczk){\r\n let index=_findLastIndex(this.paymode.thePaymodes,(m)=>{return m.paymentType==PayStyle.hyczk});\r\n pos=index==-1?pos:(index+1);\r\n }\r\n // this.paymode.thePaymodes.push(this.genNewMode(type) );\r\n this.paymode.thePaymodes.splice(pos,0,this.genNewMode(type,this.newStyle && type==PayStyle.hyczk));\r\n this.paymode.calcReserved();\r\n }\r\n\r\n @action delPay(index){\r\n const { PayStyle } = enumController.getEnumOj();\r\n _remove(this.paymode.thePaymodes,(mode)=>{\r\n return mode.paymethodId===index;\r\n });\r\n this.paymode.currentFocus = -1;\r\n this.paymode.calcReserved();\r\n }\r\n\r\n async commit(bTest){\r\n console.log('settlementStore.commit开始,参数:'+bTest);\r\n if(bTest){\r\n return Promise.resolve(true);\r\n }\r\n let { isNewRetailBCPos } = platform || {};\r\n try{\r\n if(this.type==1){\r\n await this.saveMember();\r\n }else{\r\n if(isNewRetailBCPos){\r\n await stores.offlineSys.generatorCode(this.dto);\r\n }\r\n await this.save();\r\n if(isNewRetailBCPos){\r\n await stores.offlineSys.retailSequenceUpload();\r\n }\r\n }\r\n return Promise.resolve(true);\r\n }catch(err){\r\n console.error('settlementStore.commit失败,错误信息:'+err);\r\n return Promise.resolve(err);\r\n }\r\n }\r\n\r\n handlePrint(resp) {\r\n // 储值打印\r\n return printDispatch(DoNameList.DO_STORAGE_PRINT,resp,{}) \r\n }\r\n\r\n saveMember(){\r\n const { PayStyle } = enumController.getEnumOj();\r\n runInAction(()=>{\r\n this.dto.StorageMutiSettleDetails=[];\r\n const thePaymodes = this.newStyle ?_filter(this.paymode.thePaymodes,(mode)=>{return parseFloat(mode.value)!=0;}):this.paymode.thePaymodes;\r\n _each(thePaymodes,(mode)=>{\r\n const themode=_find(this.paymode.paymodes,{'paymentType':mode.paymentType});\r\n\r\n let value=parseFloat(mode.value);\r\n let giveChange=null;\r\n if(mode.paymentType==PayStyle.xianjin && this.paymode.receivable<0 && value>Math.abs(this.paymode.receivable)){\r\n value=Math.Add(value,this.paymode.receivable);\r\n giveChange=Math.abs(this.paymode.receivable);\r\n }\r\n this.dto.StorageMutiSettleDetails.push({\r\n Code:mode.paymethodId,\r\n StorageAmount:value,\r\n GiveChange:giveChange,\r\n IdsettleStyle:themode.idSettleStyle,\r\n IdbankAccount:themode.idBankAccount,\r\n PaymentCode:mode.authCode,\r\n DynamicPropertyKeys:[],\r\n DynamicPropertyValues:[],\r\n DataSource:{Id:this.dataSource},\r\n })\r\n });\r\n\r\n });\r\n // cc结算调用\r\n let IPMSG = {};\r\n if (!!window.localStorage.IPMSG) {\r\n IPMSG = JSON.parse(window.localStorage.IPMSG);\r\n }\r\n return tApi({dto:this.dto}, 'chanjet.ME.INewRetailMemberStorage.Save', false, false).then((resp)=>{\r\n this.handlePrint(resp);\r\n });\r\n }\r\n\r\n async save(){\r\n const { PayStyle } = enumController.getEnumOj();\r\n runInAction(()=>{\r\n this.dto.RetailPaymentDetails=[];\r\n this.dto.RetailStorageDetails=[];\r\n this.dto.RetailCouponDetails=[];\r\n let czkSum=0;\r\n let Idmember=this.dto.Idmember;\r\n let count = 0;\r\n const thePaymodes = this.newStyle ?_filter(this.paymode.thePaymodes,(mode)=>{return parseFloat(mode.value)!=0;}):this.paymode.thePaymodes;\r\n _each(thePaymodes,(mode, index)=>{\r\n const themode=_find(this.paymode.paymodes,{'paymentType':mode.paymentType});\r\n if(mode.paymentType==PayStyle.hyczk){\r\n if(!Idmember){\r\n Idmember=mode.member.id;\r\n }\r\n czkSum=Math.Add(czkSum,mode.value);\r\n let MeStorageCardId = (mode.member.MeStorageCardId ? mode.member.MeStorageCardId : this.member.MeStorageCardId);\r\n this.dto.RetailStorageDetails.push({\r\n Code:mode.paymethodId,\r\n MeStorageCardId,\r\n StoragePaymentAmount:mode.value,\r\n IsOrigReturn:false,\r\n BalanceStorage:mode.balance,\r\n Idmember:mode.member.id,\r\n DynamicPropertyKeys:[],\r\n DynamicPropertyValues:[],\r\n DataSource:{Id:this.dataSource},\r\n Password:mode.authCode,\r\n })\r\n }else{\r\n let value=parseFloat(mode.value);\r\n let giveChange=null;\r\n if(mode.paymentType==PayStyle.xianjin && this.paymode.receivable<0 && value>Math.abs(this.paymode.receivable)){\r\n value=Math.Add(value,this.paymode.receivable);\r\n giveChange=Math.abs(this.paymode.receivable);\r\n }\r\n this.dto.RetailPaymentDetails.push({\r\n Code:mode.paymethodId,\r\n OrigAmount:mode.exchangeRate!=1?mode.value2:value,\r\n Amount:value,\r\n GiveChange:giveChange,\r\n IdsettleStyle:themode.idSettleStyle,\r\n IdbankAccount:themode.idBankAccount,\r\n Idcurrency:themode.idCurrency,\r\n ExchangeRate:themode.exchangeRate,\r\n PaymentCode:mode.authCode,\r\n SteadCashIntegral:mode.steadCashIntegral,\r\n OverchargesAmount:mode.overchargesAmount,\r\n DynamicPropertyKeys:[],\r\n DynamicPropertyValues:[],\r\n DataSource:{Id:this.dataSource},\r\n })\r\n if(mode.paymentType==PayStyle.djq){\r\n _each(this.paymode.checkList && this.paymode.checkList.length ? this.paymode.checkList: mode.djqs,(djq)=>{\r\n this.dto.RetailCouponDetails.push({\r\n CouponCode:djq.promoCouponCode,\r\n ReductionAmount:djq.amount,\r\n EnableAmount:djq.doorsill,\r\n CouponTitle:djq.name,\r\n IdMember:djq.UMemberID?mode.member.id:null,\r\n LastTS:djq.LastTS,\r\n PromotionId:djq.promoId,\r\n PromotionRuleId:djq.promoRuleId,\r\n PromoCouponAllocatedId:djq.id,\r\n DataSource:{Id:this.dataSource},\r\n })\r\n })\r\n }\r\n }\r\n });\r\n let { isNewRetailBCPos } = platform || {};\r\n if(this.dto.RetailStorageDetails.length>0){\r\n const themode=_find(this.paymode.paymodes,{'paymentType':PayStyle.hyczk});\r\n if (isNewRetailBCPos) {\r\n // this.dto.RetailStorageDetails && this.dto.RetailStorageDetails.forEach((value, index) => {\r\n // value.MeStorageCardId = (mode.MeStorageCardId ? mode.MeStorageCardId : this.member.MeStorageCardId);\r\n // })\r\n this.dto.RetailPaymentDetails.push({\r\n Code:this.paymode.counter,\r\n OrigAmount:czkSum,\r\n Amount:czkSum,\r\n IdsettleStyle:themode.idSettleStyle,\r\n IdbankAccount:themode.idBankAccount,\r\n DynamicPropertyKeys:[],\r\n DynamicPropertyValues:[],\r\n DataSource:{Id:this.dataSource},\r\n RetailStorageDetails: this.dto.RetailStorageDetails,\r\n })\r\n } else {\r\n this.dto.RetailPaymentDetails.push({\r\n Code:this.paymode.counter,\r\n OrigAmount:czkSum,\r\n Amount:czkSum,\r\n IdsettleStyle:themode.idSettleStyle,\r\n IdbankAccount:themode.idBankAccount,\r\n DynamicPropertyKeys:[],\r\n DynamicPropertyValues:[],\r\n DataSource:{Id:this.dataSource},\r\n })\r\n }\r\n this.dto.Idmember=Idmember;\r\n }\r\n });\r\n let { isNewRetailBCPos } = platform || {};\r\n console.log(`bc_pos环境:${isNewRetailBCPos},结算数据:`, this.dto);\r\n if (isNewRetailBCPos) {\r\n // cc结算调用\r\n let IPMSG = {};\r\n if (!!window.localStorage.IPMSG) {\r\n IPMSG = JSON.parse(window.localStorage.IPMSG);\r\n }\r\n const RetailTypeEnum = this.dto.IdbusiType == 36?\"INTEGRAL_EXCHANGE\":\"NORMAL\";\r\n\r\n if(this.dto.IdbusiType == 37 && await this.checkIntegralExchangeReturn(this.dto.RetailDetails[0].ReturnSourceId) || this.dto.IdbusiType != 37){\r\n return ccApi({ dto: {...this.dto.cut(),RetailOms:{ RetailTypeEnum }},cip:IPMSG.query || \"\"}, '/retail/RetailPos/settle', false, false, { method: 'post', timeout_skip: true }).then((resp) => {\r\n this.setDtoID(resp.ID);\r\n this.paymode.checkList = [];\r\n this.billID = resp.ID;\r\n });\r\n }\r\n } else {\r\n // tc结算调用\r\n return tApi({ dto:this.dto.cut()}, 'chanjet.RE.newRetail.Settle', false, false, { timeout_skip: true }).then((resp) => {\r\n this.setDtoID(resp.ID);\r\n this.billID = resp.ID;\r\n })\r\n }\r\n }\r\n\r\n @action setDtoID(id){\r\n this.context.viewModel.data.ID=id;\r\n }\r\n\r\n checkIntegralExchangeReturn = (id) => {\r\n return new Promise((resolve, reject) => {\r\n tApi({param: {refVoucherId:id}}, 'chanjet.RE.NewPos.GetNewIntegralExchange', false, false,{timeout_skip:true}).then((resp) => {\r\n if( resp && resp.expireIntegral>0){\r\n ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n title: \"温馨提示\",\r\n content:`存在已经过期的积分${resp.expireIntegral}退货后积分不会返还。是否继续退货?`,\r\n cancelable: false,\r\n onOk() {\r\n resolve(true);\r\n },\r\n onCancel() {\r\n reject(false);\r\n }\r\n })\r\n }else{\r\n resolve(true);\r\n }\r\n })\r\n })\r\n }\r\n\r\n async querySettleResult(){\r\n try{\r\n return Promise.resolve(await tApi({RetailCode: this.dto.Code}, 'chanjet.RE.newRetail.QuerySettleResult', false, false,{timeout_skip:true}));\r\n }catch(e){\r\n return Promise.resolve({Flag:\"1\"});\r\n }\r\n }\r\n\r\n setCookie(key, val) {\r\n var exp = new Date();\r\n exp.setTime(moment().endOf('day').valueOf());\r\n document.cookie = key + '=' + val + ';expires=' + exp.toGMTString();\r\n }\r\n\r\n getAllCookies() {\r\n var cookies = document.cookie.split(/;\\s/g);\r\n var cookieObj = {};\r\n cookies.forEach(function (item) {\r\n var key = item.split('=')[0];\r\n cookieObj[key] = item.split('=')[1];\r\n });\r\n return cookieObj;\r\n }\r\n\r\n async validePwd(value){\r\n let { isNewRetailBCPos } = platform || {};\r\n try{\r\n if (isNewRetailBCPos) {\r\n let cook1 = this.getAllCookies()['errorPwd'];\r\n let cook2 = cook1 && JSON.parse(cook1);\r\n let message = '密码输入错误';\r\n let memberId = this.paymode.currentMode.member.MeStorageCardId;\r\n if (cook2) {\r\n if (cook2.hasOwnProperty(memberId + \"\")) {\r\n if (cook2[memberId] > 3) {\r\n message = '今日密码错误已达上限,不可使用储值消费,请明日再试,如忘记请重置密码或修改密码。';\r\n return Promise.resolve(message);\r\n }\r\n }\r\n }\r\n const result = await ccApi({password: User.pwdEncrypt(value.pwd)}, `/member/MeMemberWallet/checkPaymentPassword/${value.id}`, false, false);\r\n if (!result.data) {\r\n if (cook2) {\r\n if (cook2.hasOwnProperty(memberId + \"\")) {\r\n let count = cook2[memberId];\r\n cook2[memberId] = count + 1;\r\n } else {\r\n cook2[memberId] = 1; \r\n }\r\n } else {\r\n cook2 = {};\r\n cook2[memberId] = 1; \r\n }\r\n this.setCookie('errorPwd', '', -1);\r\n this.setCookie('errorPwd', JSON.stringify(cook2));\r\n }\r\n return Promise.resolve(result.data?\"\":message);\r\n } else {\r\n const result = await tApi({\"CheckoutParams\": {\r\n \"Idmember\": value.id,\r\n \"Password\":value.pwd\r\n }}, 'AA.DR.newRetailMember.CheckoutMemberPassword', false, false);\r\n return Promise.resolve(result.Success?\"\":result.Message);\r\n }\r\n }catch(e){\r\n return \"failed\";\r\n }\r\n\r\n }\r\n}\r\n\r\nexport class PayMode{\r\n _counter=0\r\n amount=0 //应收\r\n onlineamount=0\r\n maxamount=0;\r\n @observable currentFocus=\"\"\r\n @observable received=0;\r\n @observable receivable=0;\r\n @observable paymodes =[]\r\n @observable thePaymodes=[]\r\n // @observable store = null;\r\n currentMode=null;\r\n checkList = [];\r\n updateEvent\r\n settle={\r\n name:\"复合结算\",\r\n hotKey:\"Ctrl+M\",\r\n }\r\n constructor (){\r\n // this.amount=getFixedNumber(amount);\r\n // this.calcReserved();\r\n }\r\n\r\n @action clean(){\r\n this.thePaymodes=[];\r\n this.calcReserved();\r\n }\r\n\r\n @action clear(){\r\n this.thePaymodes=[];\r\n this.calcReserved();\r\n this.paymodes = [];\r\n }\r\n\r\n setAmount(a,o){\r\n this.amount=getFixedNumber((a || 0)-(o || 0));\r\n this.onlineamount=getFixedNumber(o || 0);\r\n this.calcReserved();\r\n return this.amount<0;\r\n }\r\n\r\n @action calcReserved(){\r\n var sum=0;\r\n _each(this.thePaymodes,(mode)=>{\r\n sum=Math.Add(sum,(mode.value==\"\"?0:mode.value));\r\n });\r\n this.received = getFixedNumber(sum);\r\n this.receivable = getFixedNumber(this.amount - sum);\r\n }\r\n\r\n @action calcCheckList = () => {\r\n this.checkList = [];\r\n }\r\n\r\n @action calcDjqCheckValue(q1, dto, params) {\r\n let useLimitPerOrder = PosInitData('UseLimitPerOrder');\r\n let qList = _filter(this.currentMode.djqs,djq=>djq.checked);\r\n if (qList.length === useLimitPerOrder && !q1.checked) {\r\n Message.warn('本单最多可用'+useLimitPerOrder+'张');\r\n return;\r\n }\r\n if (params === 'single') {\r\n this.checkList = [];\r\n }\r\n\r\n let { isNewRetailBCPos } = platform || {};\r\n const { PayStyle, Differentiate } = enumController.getEnumOj();\r\n\r\n if(q1){\r\n if(!this.currentMode.boriginReturn && parseFloat(this.currentMode.maxamount)<=0){\r\n Message.error(`本单没有${Differentiate.COUPON}可用金额,该券不可使用。`);\r\n return ;\r\n }\r\n let q=_find(this.currentMode.djqs,(djq)=>{return djq.promoCouponCode==q1.promoCouponCode});\r\n if(q && !q.checked && parseFloat(this.amount)<parseFloat(q.doorsill)){\r\n Message.error(\"本单金额低于使用门槛,该券不可使用。\");\r\n return ;\r\n }\r\n //判断是否是选择优惠券 //CC优惠券只能使用一个\r\n // if (q1 && !q1.checked && isNewRetailBCPos) {\r\n // // 检查是否有已经选定优惠券 并且去除选定的优惠券\r\n // this.currentMode.djqs.forEach((djq, index) => {\r\n // if (djq.checked) this.currentMode.djqs[index].checked = false;\r\n // })\r\n // }\r\n q && (q.checked = !q.checked);\r\n }\r\n var sum=0;\r\n // console.log(this.store, 'stores-------');\r\n if (!q1.checked) {\r\n this.checkList.forEach((ele, i) => {\r\n if (ele.id === q1.id) {\r\n this.checkList.splice(i, 1);\r\n }\r\n })\r\n } else {\r\n this.checkList.push(q1);\r\n }\r\n\r\n this.checkList.forEach((ele) => {\r\n sum=Math.Add(sum,ele.amount);\r\n })\r\n this.currentMode.value = getFixedNumber(Math.min(this.receivable,sum,this.currentMode.maxamount));\r\n console.log(this.receivable, sum, Math.min(this.receivable,sum,this.currentMode.maxamount), 'sum---------');\r\n this.currentMode.receivable = getFixedNumber(this.receivable - Math.min(this.receivable,sum,this.currentMode.maxamount));\r\n this.currentMode.overchargesAmount=getFixedNumber(sum-this.currentMode.value);\r\n if (params === 'single') {\r\n return;\r\n }\r\n let promoVoucher = {};\r\n promoVoucher.boName = \"Retail\";\r\n // promoVoucher.promoLinks = _filter(this.currentMode.djqs,djq=>djq.checked);\r\n promoVoucher.meMemberId = this.currentMode.member.id;\r\n promoVoucher.storeFactorId = PosInitData('storeID');\r\n promoVoucher.voucherDetailList = [];\r\n dto.RetailDetails.forEach(item => {\r\n let detailDTO = {};\r\n detailDTO.uuid = item.Code;\r\n detailDTO.detailBoName = \"RetailDetail\";\r\n detailDTO.voucherDetailId = item.ID;\r\n detailDTO.productId = item.Idinventory;\r\n detailDTO.uomId = item.Idunit;\r\n detailDTO.productSpecId=item.ProductSpecId;\r\n detailDTO.isManualFreeGift = item.IsPresent;\r\n detailDTO.isListPriceIncludingTax = item.TaxFlag || true;\r\n detailDTO.IsManualChangePrice = item.IsManualChangePrice;\r\n\r\n \r\n\r\n // if(detailDTO.IsManualChangePrice)//如果是手工改价\r\n // {\r\n // detailDTO.listPrice = item.TaxPrice;\r\n // detailDTO.netAmountWithTax = item.TaxAmount;\r\n // }\r\n // else\r\n // {\r\n let bookingQuantity=0;\r\n if(item.BookingQuantity)\r\n {\r\n bookingQuantity=item.BookingQuantity;\r\n }\r\n detailDTO.listPrice = JSON.getCellValue(item, \"listPrice\");\r\n detailDTO.netAmountWithTax = Math.Multiply(detailDTO.listPrice,Math.Minus(item.Quantity,bookingQuantity));//item.TaxAmount;\r\n //} \r\n detailDTO.taxRate = item.TaxRate;\r\n detailDTO.quantity = item.Quantity;\r\n \r\n detailDTO.amountWithTax = item.RetailAmount;\r\n // 促销 start\r\n if(item.PromotionDetails && item.PromotionDetails.length != 0){\r\n let promoLinks = [];\r\n item.PromotionDetails.forEach((promotion)=>{\r\n promoLinks.push({\r\n promoId:promotion.IdSalesPromotionDTO,\r\n promoRuleId:promotion.PromotionRuleId\r\n })\r\n })\r\n if(promoLinks.length != 0) detailDTO.promoLinks = promoLinks;\r\n }\r\n // 促销 end\r\n promoVoucher.voucherDetailList.push(detailDTO);\r\n });\r\n promoVoucher.promoLinks = this.checkList;\r\n return ccApi({\r\n ...promoVoucher\r\n }, 'promotion/PromoCalculate/findUsefulCouponPromoList', false, false,{method:'post',timeout_skip:true})\r\n .then((result)=>{\r\n if(result && result.length != 0 ){\r\n result.forEach((element, index) => {\r\n let djq1 = false;\r\n this.currentMode.djqs.forEach((djq) => {\r\n if (element.id === djq.id) {\r\n djq1 = true;\r\n }\r\n })\r\n const { couponCode, name, tieredAmountResult, fromDate , dateMount , promoMethodEnum , discountPct, nominalAmount,promoId,id, doorsill} = element || {};\r\n const { condValue, promoDiscount,displayText,promoRuleId, couponCategoryEnum } = tieredAmountResult\r\n if(!djq1) {\r\n // this.currentMode.djqs.push({\r\n // promoCouponCode: element.CouponCode,\r\n // name: element.CouponTitle,\r\n // IsEnable: true,\r\n // amount: element.ReductionAmount,\r\n // doorsill: element.EnableAmount,\r\n // LastTS: element.LastTS,\r\n // checked: false,\r\n // IsRepelWithPoints: true,\r\n // UMemberID: dto.Idmember,\r\n // expired: null,\r\n // displayText,\r\n // promoMethodEnum,\r\n // discountPct,\r\n // promoId,\r\n // promoRuleId,\r\n // couponCategoryEnum: tieredAmountResult.couponCategoryEnum,\r\n // id\r\n // })\r\n this.addDjqs(couponCode,name,true,nominalAmount,doorsill,element.LastTS,false,true,\r\n dto.Idmember,\r\n dateMount,\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n tieredAmountResult.couponCategoryEnum,\r\n id);\r\n djq1 = false;\r\n } else {\r\n this.setCouponNum(element.id, tieredAmountResult.couponCategoryEnum, promoMethodEnum, nominalAmount,promoDiscount);\r\n // this.currentMode.djqs[0].couponCategoryEnum = 'couponCategoryEnum';\r\n // djq1.couponCategoryEnum = element.tieredAmountResult.couponCategoryEnum\r\n }\r\n }) \r\n }\r\n // 优惠券【6052098985043】与【6120822326451】不可叠加使用\r\n })\r\n //this.receivable = getFixedNumber(this.receivable - sum);\r\n }\r\n\r\n @action setCouponNum = (id, couponNum, promoMethodEnum, nominalAmount,promoDiscount) => {\r\n this.currentMode.djqs.forEach((ele) => {\r\n if (ele.id === id) {\r\n promoMethodEnum == \"CASH_COUPON\" ? ele.amount = nominalAmount: ele.amount = promoDiscount;\r\n ele.couponCategoryEnum = couponNum;\r\n let IsEnable = (ele.couponCategoryEnum === 'RIGUP' || ele.couponCategoryEnum === 'UN_MATCH' || ele.couponCategoryEnum === \"PREPARING\" || ele.couponCategoryEnum === 'PROMO_LIMITED' || ele.couponCategoryEnum === 'COUPON_CONFLICT') ? false : true ;\r\n ele.IsEnable = IsEnable;\r\n }\r\n })\r\n }\r\n\r\n @action addDjqs = (promoCouponCode,\r\n name,\r\n IsEnable,\r\n amount,\r\n doorsill,\r\n LastTS,\r\n checked,\r\n IsRepelWithPoints,\r\n UMemberID,\r\n expired,\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n couponCategoryEnum,\r\n id) => {\r\n let djq={\r\n promoCouponCode,\r\n name,\r\n IsEnable,\r\n amount,\r\n doorsill,\r\n LastTS,\r\n checked,\r\n IsRepelWithPoints,\r\n UMemberID,\r\n expired,\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n couponCategoryEnum,\r\n id\r\n };\r\n this.currentMode.djqs.push(\r\n djq\r\n );\r\n }\r\n\r\n @action calcDjqValue(q1){\r\n let { isNewRetailBCPos } = platform || {};\r\n const { Differentiate } = enumController.getEnumOj();\r\n if(q1){\r\n if(!this.currentMode.boriginReturn && parseFloat(this.currentMode.maxamount)<=0){\r\n Message.error(`本单没有${Differentiate.COUPON}可用金额,该券不可使用。`);\r\n return ;\r\n }\r\n let q=_find(this.currentMode.djqs,(djq)=>{return djq.code==q1.code});\r\n if(q && !q.checked && parseFloat(this.amount)<parseFloat(q.doorsill)){\r\n Message.error(\"本单金额低于使用门槛,该券不可使用。\");\r\n return ;\r\n }\r\n //判断是否是选择优惠券 //CC优惠券只能使用一个\r\n // if (q1 && !q1.checked && isNewRetailBCPos) {\r\n // // 检查是否有已经选定优惠券 并且去除选定的优惠券\r\n // this.currentMode.djqs.forEach((djq, index) => {\r\n // if (djq.checked) this.currentMode.djqs[index].checked = false;\r\n // })\r\n // }\r\n q && (q.checked = !q.checked);\r\n }\r\n var sum=0;\r\n // console.log(this.store, 'stores-------');\r\n _each(_filter(this.currentMode.djqs,djq=>djq.checked),(q)=>{\r\n sum=Math.Add(sum,q.amount);\r\n });\r\n this.currentMode.value = getFixedNumber(Math.min(this.receivable,sum,this.currentMode.maxamount));\r\n this.currentMode.receivable = getFixedNumber(this.receivable -this.currentMode.value);\r\n this.currentMode.overchargesAmount=getFixedNumber(sum-this.currentMode.value);\r\n\r\n //this.receivable = getFixedNumber(this.receivable - sum);\r\n }\r\n\r\n @action reCalculationDjqs() {\r\n var sum=0;\r\n _each(_filter(this.currentMode.djqs,djq=>djq.checked),(q)=>{\r\n sum=Math.Add(sum,q.amount);\r\n });\r\n this.currentMode.value = getFixedNumber(Math.min(this.receivable,sum,this.currentMode.maxamount));\r\n this.currentMode.receivable = getFixedNumber(this.receivable -this.currentMode.value);\r\n this.currentMode.overchargesAmount=getFixedNumber(sum-this.currentMode.value);\r\n this.currentMode.maxamount = this.currentMode.receivable || this.currentMode.receivable;\r\n }\r\n\r\n @action clearDjqs() {\r\n this.currentMode.djqs = [];\r\n }\r\n\r\n @action setCurrentModeValue(v,max){\r\n this.currentMode.value=parseFloat(v) || 0;\r\n this.currentMode.errinfo='';\r\n let sum = this.amount;\r\n const { PayStyle} = enumController.getEnumOj();\r\n this.thePaymodes && this.thePaymodes.forEach((mode) => {\r\n if (mode.paymentType === PayStyle.hyczk) {\r\n sum -= mode.value;\r\n }\r\n })\r\n\r\n if(this.amount>0 && (v==='' || v==='0.00') && sum !== 0){\r\n this.currentMode.errinfo=\"实收金额必须录入\";\r\n }else if(Math.abs(parseFloat(v))>Math.abs(getFixedNumber(sum))){\r\n this.currentMode.errinfo=\"实收不应大于应收\";\r\n }else if(parseFloat(v)>0 && parseFloat(v) > (max || 0) ){\r\n this.currentMode.errinfo=\"余额不足\";\r\n }\r\n }\r\n @action calcMemberBalance(){\r\n this.currentMode.balance = this.currentMode.member.rawbalance - this.currentMode.value;\r\n }\r\n\r\n get charge(){\r\n return Math.abs(this.receivable);\r\n }\r\n\r\n get counter(){\r\n return ++this._counter;\r\n }\r\n\r\n async setPaymodes(type,isIntegralExchange){\r\n const { settleStyleType , PayStyle} = enumController.getEnumOj();\r\n const {memberStoreCode , settlementCode } = settleStyleType;\r\n const param = {'settleStyleType':type==1?memberStoreCode:settlementCode,isIntegralExchange}\r\n const modes = await tApi({param}, 'chanjet.RE.NewPos.GetNewStoreSettleStyles', false, false);\r\n if(modes){\r\n runInAction(()=>{\r\n let paymodes = [];\r\n _each(modes.SettleStyles, (mode,index)=>{\r\n //产品需求确认会员储值卡结算方式前端展示统一调整为“储值卡\" tuzha by 2020-07-08\r\n\r\n if(mode.Code==PayStyle.hyczk)\r\n {\r\n mode.Name='储值余额';\r\n }\r\n paymodes.push({\r\n name:mode.Name,\r\n isDefault:mode.IsDefaultSettleStyle,\r\n isQuick:_findIndex(modes.QuickSettleStyles, {'Code':mode.Code})>=0,\r\n orderBy:1,\r\n paymentType:mode.Code,\r\n offlineDisable:mode.offlineDisable,\r\n idSettleStyle:mode.IdSettleStyle,\r\n idBankAccount:mode.IdBankAccount,\r\n exchangeRate:mode.Currency?mode.Currency.ExchangeRate:1,\r\n idCurrency:mode.Currency?mode.Currency.ID:-1,\r\n calDirection:mode.Currency?mode.Currency.CalDirection.Id:\"88\",\r\n })\r\n })\r\n this.paymodes = paymodes;\r\n //modes.QuickSettleStyles\r\n })\r\n }\r\n }\r\n}\r\n\r\nexport class Member{\r\n id;\r\n uid;\r\n @observable cardNo;\r\n type;\r\n @observable balance;\r\n rawbalance;\r\n needPwd;\r\n bonusPoints;\r\n @observable exchangable;\r\n @observable MeStorageCardId;\r\n @observable StorageCardNo;\r\n constructor(m){\r\n if(m){\r\n this.id=m.ID;\r\n this.uid=m.Uid;\r\n this.type=m.MemberType?m.MemberType.Name:\"普通\";\r\n this.rawbalance=m.BalanceStorage;\r\n let index=_findIndex(m.DynamicPropertyKeys,(key)=>{return key=='canusedbalancestorage';});\r\n const { isNewRetailBCPos } = platform || {};\r\n m.StorageCardNo && (this.StorageCardNo = m.StorageCardNo);\r\n m.MeStorageCardId && (this.MeStorageCardId = m.MeStorageCardId);\r\n runInAction(()=>{\r\n this.cardNo=m.CardCode;\r\n if(index>=0){\r\n this.balance=parseFloat(m.DynamicPropertyValues[index]);\r\n }else{\r\n this.balance=this.rawbalance;\r\n }\r\n });\r\n this.needPwd=m.MemberType?m.MemberType.IsNeedPwd:false;\r\n this.NeedModifyPassword=m.NeedModifyPassword;\r\n this.bonusPoints=m.BalanceIntegral;\r\n }\r\n }\r\n @action setExchangable(v){\r\n this.exchangable=v;\r\n }\r\n @action setCardNo(v){\r\n this.cardNo=v;\r\n this.id=null;\r\n }\r\n @action setMeStorageCardId(v) {\r\n this.MeStorageCardId = v;\r\n }\r\n\r\n @action setStorageCardNo(v) {\r\n this.StorageCardNo = v;\r\n }\r\n}\r\n\r\n"]}
|
|
1
|
+
{"version":3,"sources":["tplus-components-touch/components/settlement/settlementStore.js"],"names":["t","i18n","getFixedT","SettlementStore","paymode","dto","dtoParams","member","brefund","bquick","boriginReturn","newStyle","handleCzkData","m","StorageCardNo","currentMode","errinfo","memberId","ID","value","receivable","Math","max","updateEvent","message","sum","thePaymodes","total","cur","String","isNullOrEmpty","checkReceived","amount","parseFloat","setTimeout","nextInput","document","querySelector","select","getCouponList","enumController","getEnumOj","PayStyle","Differentiate","couponApplyRule","CouponApplyRule","SHOWN_BY_CUSTOMER","coupon_code","promoVoucher","clearDjqs","reCalculationDjqs","boName","voucherId","onlinePaymentAmount","OnlinePaymentAmount","promoLinks","djqs","djq","checked","totalAmountWithTax","Minus","TotalTaxAmount","redBlueFlagEnum","meMemberId","Idmember","storeFactorId","Idstore","voucherDetailList","RetailDetails","forEach","detailDTO","uuid","item","Code","detailBoName","voucherDetailId","productId","Idinventory","uomId","Idunit","productSpecId","ProductSpecId","isManualFreeGift","IsPresent","isListPriceIncludingTax","TaxFlag","IsManualChangePrice","bookingQuantity","BookingQuantity","listPrice","JSON","getCellValue","netAmountWithTax","Multiply","Quantity","taxRate","TaxRate","quantity","amountWithTax","RetailAmount","PromotionDetails","length","promotion","push","promoId","IdSalesPromotionDTO","promoRuleId","PromotionRuleId","method","timeout_skip","then","result","element","couponCode","name","tieredAmountResult","fromDate","dateMount","promoMethodEnum","discountPct","nominalAmount","id","condValue","promoDiscount","displayText","couponCategoryEnum","IsRepelWithPoints","themode","paymentType","jfdx","Message","error","COUPON","SN","IsEnable","addDjq","calcDjqCheckValue","info","getSettleGift","billID","checkCoupon","sn","platform","isNewRetailBCPos","request","Uid","uid","StoreCode","Inventories","d","detail","IdInventory","Inventory","IdUnit","FreeItem0","FreeItem1","FreeItem2","FreeItem3","FreeItem4","FreeItem5","FreeItem6","FreeItem7","FreeItem8","FreeItem9","InventoryClassCodes","InventoryClass","Amount","code","Title","ReduceAmount","StartAmount","LastTS","UMemberID","repeatStorageModal","content","resolve","reject","ModalWraper","confirm","title","okText","className","zIndex","onOk","saveMember","ret","onCancel","checkIntegralExchangeReturn","param","refVoucherId","resp","expireIntegral","cancelable","PayMode","params","localStore","get","cloudPrintArguments","event","type","isIntegralExchange","setPaymodes","context","amounthandler","datasource","storeinfo","data","payModeKey","amountHandler","dataSource","storeInfo","viewModel","global","DealSingleRowAmountSettingProcessorBlock","execute","isQuickCash","xianjin","DealAmountSettingProcessorBlock","Member","setAmount","clean","initByOriginReturn","setModes","paymodes","p","mode","addPay","changeValue","paymethodId","console","log","checkList","RetailPaymentDetails","IdsettleStyle","SettleStyle","hyczk","okType","newmode","genNewMode","authCode","PaymentCode","steadCashIntegral","SteadCashIntegral","overchargesAmount","OverchargesAmount","thirdPaymentReturnInfo","ThirdPaymentReturnInfo","RetailCouponDetails","CouponCode","CouponTitle","ReductionAmount","EnableAmount","RetailStorageDetails","balanceAmount","storageCardNo","meStorageCardId","DynamicPropertyKeys","ele","index","DynamicPropertyValues","BalanceStorage","StoragePaymentAmount","MeStorageCardId","Password","balance","calcReserved","key","currentFocus","splice","addPayDirectly","IntegralSteadCashParams","BalanceTaxAmount","integralCashOverOrderAmount","stores","user","options","v","IdStore","storeID","storeCode","address","CardTypeEnum","updateCardInfo","result1","data1","parse","enable","warn","disableReason","SearchParams","Key","IsSingleMember","Data","CheckMemberStorageProcessorBlock","focus","promoCouponCode","doorsill","expired","unCheck","count","calcDjqValue","append","afterSetCurrentMode","setExchangable","MaxAmount","perIntegral","cashAmount","maxamount","notwithm","isQuick","counter","exchangeRate","calDirection","thridPayment","value2","value3","order","card","setMaxAmount","q","Add","getViewItem","availableAmount","shouldSetValue","blur","isNaN","pay","pos","undefined","StorageMutiSettleDetails","giveChange","abs","StorageAmount","GiveChange","idSettleStyle","IdbankAccount","idBankAccount","DataSource","Id","bTest","status","paylist","filter","findStorageBillValidate","returnMsg","state","ret1","offlineSys","generatorCode","save","ret2","retailSequenceUpload","thirdPayRefund","DoNameList","DO_STORAGE_PRINT","TradeType","ThirdPaymentInfo","IPMSG","window","localStorage","payList","payment","tradeType","PAY","REFUND","thirdPay","msg","handlePrint","czkSum","IsOrigReturn","OrigAmount","Idcurrency","idCurrency","ExchangeRate","IdMember","PromotionId","PromoCouponAllocatedId","RetailTypeEnum","IdbusiType","ReturnSourceId","cut","RetailOms","cip","query","setDtoID","vType","trade","cto","removeThirdPayDto","VoucherType","Payment","nativeMs","setIpcRendererMethod","res","Result","duration","RetailCode","Flag","val","exp","Date","setTime","endOf","valueOf","cookie","toGMTString","cookies","split","cookieObj","cook1","getAllCookies","cook2","memberStorageId","hasOwnProperty","cardTypeEnum","cardStatusEnum","md5Password","User","pwdEncrypt","pwd","cardType","password","setCookie","Success","action","newPass","newPassConfirm","idstore","oldPassword","newPassword","successful","_this","getLoginInfo","updateMemberStorageCardNo","WalletEnabled","_counter","onlineamount","settle","hotKey","a","o","received","walletEnabled","CardStatusEnum","isNeedPassword","IsNeedPassword","rawbalance","freePaymentPasswordStore","FreePaymentPasswordStore","q1","useLimitPerOrder","qList","i","min","djq1","addDjqs","setCouponNum","ceil","v1","floor","isHorizontalPad","isHorizontalSunMi","isMobileEnvironment","settleStyleType","memberStoreCode","settlementCode","modes","settleLists","SettleStyles","Name","isDefault","IsDefaultSettleStyle","QuickSettleStyles","orderBy","offlineDisable","IdSettleStyle","IdBankAccount","Currency","CalDirection","observable","couponNum","MemberType","cardNo","CardCode","needPwd","IsNeedPwd","NeedModifyPassword","bonusPoints","BalanceIntegral","exchangable"],"mappings":"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","file":"settlementStore.js","sourcesContent":["import { observable, computed, action, autorun, runInAction } from 'mobx'\r\nimport { stores, i18n, localStore, nativeMs } from 'mutants-microfx';\r\nimport _find from 'lodash/find';\r\nimport _remove from 'lodash/remove';\r\nimport _each from 'lodash/each';\r\nimport _map from 'lodash/map';\r\nimport _join from 'lodash/join';\r\nimport _trim from 'lodash/trim';\r\nimport _filter from 'lodash/filter';\r\nimport _findIndex from 'lodash/findIndex';\r\nimport _findLastIndex from 'lodash/findLastIndex';\r\nimport _findKey from 'lodash/findKey';\r\nimport { PosInitData } from 'tplus-poslogin';\r\nimport { getFixedNumber, stopPropagation } from './utils'\r\nimport {ccApi,tApi, User} from 'tplus-api';\r\nimport _clonedeep from 'lodash/cloneDeep';\r\nimport Message from '../message';\r\nimport { platform,enumController } from 'mutants-util';\r\nimport { printDispatch,DoNameList,ModalWraper } from 'tplus-components-touch'\r\nimport moment from \"moment\";\r\nimport _reduce from 'lodash/reduce';\r\nimport { Card } from 'antd';\r\n\r\nconst t = i18n.getFixedT(null, 'newretail');\r\n\r\nexport default class SettlementStore {\r\n paymode = null\r\n dto=null\r\n dtoParams = null\r\n member=null\r\n brefund=false\r\n context\r\n bquick=false;\r\n amountHandler\r\n dataSource\r\n storeInfo\r\n updateEvent\r\n type\r\n boriginReturn=false\r\n newStyle=true//type==2\r\n billID\r\n constructor(){\r\n this.paymode= new PayMode()\r\n let params = localStore && localStore.get('cloudPrintArguments');\r\n if (params) this.cloudPrintArguments = params;\r\n this.newStyle=localStore && localStore.get('voucherDefaultPosMode')=='voucher';\r\n }\r\n\r\n initPaymodes(event,type,isIntegralExchange){\r\n this.isIntegralExchange = isIntegralExchange;\r\n this.paymode.setPaymodes(type,isIntegralExchange);\r\n this.updateEvent=event;\r\n }\r\n\r\n init(context,amounthandler,datasource,storeinfo,bquick,amount,type,data,payModeKey){\r\n this.newStyle=localStore && localStore.get('voucherDefaultPosMode')=='voucher';\r\n this.type=type;\r\n if(context){\r\n this.context=context;\r\n this.amountHandler=amounthandler;\r\n this.dataSource=datasource;\r\n this.storeInfo=storeinfo;\r\n this.dto=context.viewModel.data;\r\n runInAction(()=>{\r\n // 单品金额抹零\r\n if (global.DealSingleRowAmountSettingProcessorBlock) {\r\n global.DealSingleRowAmountSettingProcessorBlock.execute(this.dto);\r\n }\r\n const { PayStyle } = enumController.getEnumOj();\r\n const isQuickCash = bquick && payModeKey == PayStyle.xianjin;\r\n\r\n // 成交金额抹零\r\n if (global.DealAmountSettingProcessorBlock) {\r\n global.DealAmountSettingProcessorBlock.execute(this.dto,isQuickCash);\r\n }\r\n });\r\n // this.member=context.stores && context.stores.memberStore && context.stores.memberStore.member;\r\n this.member=this.dto.Member;//stores.selectMemberStore.selectMemberInfo;\r\n this.brefund=this.paymode.setAmount( this.dto.TotalTaxAmount ,this.dto.OnlinePaymentAmount );\r\n }else{\r\n this.brefund=this.paymode.setAmount( amount ,0 );\r\n this.dto=data;\r\n }\r\n this.paymode.clean();\r\n \r\n //this.dto.TotalTaxAmount<0;\r\n this.bquick=!!bquick;\r\n this.boriginReturn=JSON.getCellValue(this.dto, \"IsOriginalReturn\");\r\n if(this.boriginReturn){\r\n this.initByOriginReturn();\r\n }\r\n if(this.newStyle){\r\n this.setModes();\r\n }\r\n }\r\n\r\n setModes(){\r\n _each(this.paymode.paymodes,(p)=>{\r\n if(_findIndex(this.paymode.thePaymodes,(mode)=>{return p.paymentType==mode.paymentType})==-1){\r\n this.addPay(p.paymentType);\r\n }\r\n });\r\n if(!this.boriginReturn && this.paymode.thePaymodes.length>0){\r\n this.changeValue(this.paymode.thePaymodes[0].paymethodId,0,true);\r\n }\r\n }\r\n\r\n amountChanged(amount){\r\n if(this.type==1){\r\n this.brefund=this.paymode.setAmount( amount ,0 );\r\n }\r\n\r\n }\r\n\r\n @action queryPwd = (newPass, newPassConfirm) => {\r\n if (!newPass || !newPassConfirm) {\r\n return Message.warn('您还有未填写项');\r\n }\r\n if (newPass !== newPassConfirm) {\r\n return Message.warn('您两次输入的密码不一致');\r\n }\r\n let idstore = PosInitData('storeID');\r\n return ccApi({ \r\n Idstore: idstore,\r\n meMemberId: this.paymode.currentMode.memberId,\r\n oldPassword: null,\r\n newPassword: User.pwdEncrypt(newPassConfirm),\r\n dataSource:\"POS\"\r\n }, '/member/MeMemberWallet/setWalletPayPassword', false, false, { method: 'post', timeout_skip: true }).then((resp) => {\r\n if (resp.successful) {\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n @action\r\n initByOriginReturn(){\r\n const { PayStyle } = enumController.getEnumOj();\r\n const { isNewRetailBCPos } = platform || {};\r\n console.log(this.dto, 'dto==========');\r\n this.paymode.checkList = [];\r\n _each(this.dto.RetailPaymentDetails,(detail)=>{\r\n let themode=_find(this.paymode.paymodes,{'idSettleStyle':detail.IdsettleStyle});\r\n if (detail.SettleStyle.Code === PayStyle.hyczk && !themode) {\r\n ModalWraper.info({\r\n title: '温馨提示',\r\n content: '没有储值结算方式,请在后台添加储值余额结算方式。',\r\n okText:'确定',\r\n okType:'primary'\r\n });\r\n }\r\n if(themode && themode.paymentType && themode.paymentType!=PayStyle.hyczk){\r\n let newmode={\r\n ...this.genNewMode(themode.paymentType,false,detail.Amount),\r\n authCode:detail.PaymentCode,\r\n steadCashIntegral:detail.SteadCashIntegral,\r\n overchargesAmount:detail.OverchargesAmount,\r\n boriginReturn:true,\r\n thirdPaymentReturnInfo: detail.ThirdPaymentReturnInfo\r\n };\r\n this.paymode.currentMode=newmode;\r\n if(themode.paymentType==PayStyle.djq){\r\n _each(this.dto.RetailCouponDetails,(djq)=>{\r\n if (isNewRetailBCPos) {\r\n const { displayText, promoRuleId, dateMount, promoMethodEnum, discountPct, promoId, id } = djq || {};\r\n this.addDjq(djq.CouponCode, djq.CouponTitle, true, null,djq.ReductionAmount, djq.EnableAmount, djq.LastTS, true, false, \r\n this.dto.Idmember,\r\n dateMount,\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n null,\r\n id,\r\n true);\r\n return;\r\n }\r\n this.addDjq(djq.CouponCode, djq.CouponTitle, true, null, djq.ReductionAmount, djq.EnableAmount, djq.LastTS, true, false,);\r\n })\r\n }\r\n this.paymode.thePaymodes.push(newmode)\r\n }\r\n })\r\n _each(this.dto.RetailStorageDetails,(detail)=>{\r\n let balanceAmount = null;\r\n let storageCardNo = null;\r\n let meStorageCardId = null;\r\n detail.DynamicPropertyKeys.forEach((ele, index) => {\r\n if (ele === \"mestoragecard\") {\r\n balanceAmount = detail.DynamicPropertyValues[index].BalanceStorage - detail.StoragePaymentAmount;\r\n storageCardNo = detail.DynamicPropertyValues[index].StorageCardNo;\r\n meStorageCardId = detail.DynamicPropertyValues[index].MeStorageCardId;\r\n }\r\n })\r\n let newmode={\r\n ...this.genNewMode(PayStyle.hyczk,false,detail.StoragePaymentAmount),\r\n member:new Member(detail.Member ? detail.Member :null),\r\n authCode:detail.Password ? detail.Password: null,\r\n balance:balanceAmount,\r\n boriginReturn:true,\r\n meStorageCardId: meStorageCardId ? meStorageCardId : detail.MeStorageCardId,\r\n storageCardNo: storageCardNo ? storageCardNo : detail.StorageCardNo\r\n };\r\n this.paymode.thePaymodes.push(newmode)\r\n })\r\n this.paymode.calcReserved();\r\n }\r\n\r\n clean(){\r\n this.bquick=false;\r\n this.paymode.clean();\r\n }\r\n\r\n @action quickSettle(key){\r\n this.addPay(key,true);\r\n }\r\n\r\n //outer call\r\n //(type===PayStyle.hyczk || type===PayStyle.jfczk || type===PayStyle.jfdx || type===PayStyle.djq)\r\n @action changeFocusAndAddPay(type){\r\n const { PayStyle } = enumController.getEnumOj();\r\n this.paymode.currentFocus=type;\r\n if(this.paymode.currentMode){\r\n if(type==PayStyle.jfdx){\r\n if(this.newStyle){\r\n let index=_findIndex(this.paymode.thePaymodes,(m)=>{return m.paymentType==PayStyle.jfdx});\r\n this.paymode.thePaymodes.splice(index,1,this.paymode.currentMode);\r\n this.paymode.calcReserved();\r\n }else{\r\n this.addPayDirectly(this.paymode.currentMode);\r\n }\r\n \r\n //抵现积分\r\n tApi({IntegralSteadCashParams:{\r\n Idmember:this.paymode.currentMode.memberId,\r\n TotalTaxAmount:this.paymode.amount,\r\n BalanceTaxAmount: this.paymode.currentMode.value,\r\n }}, 'AA.DR.newRetailMember.CalculdateIntegralSteadCash', false, false).then((result)=>{\r\n // this.paymode.currentMode.steadCashIntegral=result.Integral;\r\n // this.paymode.currentMode.perIntegral=result.perIntegral;\r\n // this.paymode.currentMode.cashAmount=result.cashAmount;\r\n this.paymode.currentMode.integralCashOverOrderAmount=result.integralCashOverOrderAmount;\r\n this.paymode.currentMode.overchargesAmount=result.Amount-this.paymode.currentMode.value;\r\n });\r\n }else{\r\n this.addPayDirectly(this.paymode.currentMode);\r\n }\r\n }else{\r\n this.addPay(type);\r\n }\r\n }\r\n\r\n // 设置密码后更新会员信息\r\n @action updateMemberInfo = async (_this) => {\r\n const { IdStore, StoreCode } = this.getLoginInfo();\r\n const resp = await tApi({ Idmember: this.member.ID, IdStore, StoreCode }, 'chanjet.AA.DR.INewRetailMember.GetUmemberDTO', false, false);\r\n _this.member = resp;\r\n _this.paymode.updateMemberStorageCardNo(resp.StorageCardNo, resp.WalletEnabled);\r\n return Promise.resolve(resp);\r\n }\r\n\r\n @action updateCurrentMode = async (memberId) => {\r\n // 查看会员卡信息\r\n let result = await ccApi({},`/marketingtool/MeStorageCard/getCardInfoByMemberId/${memberId}/${true}`,false, false, { method: 'get' })\r\n if (result && result.data.length) {\r\n if (result.data.length === 1) {\r\n this.paymode.updateCardInfo(result.data[0]);\r\n return result.data;\r\n } else {\r\n if (result.data && result.data.length === 1) {\r\n this.paymode.updateCardInfo(result.data[0]);\r\n return result.data;\r\n } else if (result.data && result.data.length > 1) {\r\n return result.data;\r\n } else {\r\n Message.warn('没有可用储值卡!');\r\n return false;\r\n }\r\n }\r\n // result.data.forEach((m) => {\r\n // if (m.CardTypeEnum === 'BALANCE_CARD') {\r\n // // 会员概念改为卡,把这些字段都放开\r\n // this.paymode.updateCardInfo(m);\r\n // }\r\n // })\r\n }\r\n }\r\n\r\n @action updateCardInfo = async () => {\r\n let address = `/marketingtool/MeStorageCard/getCardInfoByCardNo/${this.paymode.currentMode.storageCardNo}`;\r\n let result = await ccApi({}, address, false, false, { method: 'get', timeout_skip: true })\r\n this.paymode.updateCardInfo(result.data);\r\n }\r\n\r\n getLoginInfo() {\r\n return stores.user.options.get('loginInfo');\r\n }\r\n\r\n handleCzkData = (m) => {\r\n if(!m || !m.StorageCardNo){\r\n runInAction(()=>{this.paymode.currentMode.errinfo=\"无效的会员卡号\";});\r\n }\r\n else{\r\n runInAction(()=>{\r\n this.paymode.currentMode.errinfo=\"\";\r\n this.paymode.currentMode.memberId = m.ID;\r\n this.paymode.currentMode.value=getFixedNumber(this.brefund?this.paymode.receivable:Math.max(this.paymode.receivable,0));\r\n this.updateEvent();\r\n let message='';\r\n const sum = _reduce(this.paymode.thePaymodes, (total, cur) => total + cur.value, 0)\r\n // 对于卡不用判断会员的一些信息\r\n // if (global.CheckMemberStorageProcessorBlock ) {\r\n // message= CheckMemberStorageProcessorBlock.execute(m);\r\n // }\r\n if (!String.isNullOrEmpty(message)) {\r\n this.paymode.currentMode.errinfo=message;\r\n }\r\n else if(this.checkReceived(this.paymode.currentMode,\"balance\")){\r\n this.paymode.currentMode.errinfo=\"余额不足\";\r\n }else if(this.paymode.amount>0 && parseFloat(this.paymode.amount) !== sum && this.paymode.currentMode.value==0){\r\n this.paymode.currentMode.errinfo=\"实收金额必须录入\";\r\n } else {\r\n // 查询成功后将焦点移入下一个输入框\r\n setTimeout(() => {\r\n const nextInput = document.querySelector('.czk .received .input');\r\n nextInput && nextInput.select();\r\n }, 300)\r\n }\r\n });\r\n }\r\n }\r\n\r\n loadCzk(v){\r\n if(_trim(v)===\"\"){\r\n runInAction(()=>{\r\n this.paymode.currentMode.errinfo=\"请输入储值卡\";\r\n });\r\n return;\r\n }\r\n const IdStore=this.storeInfo.storeID;\r\n const StoreCode=this.storeInfo.storeCode;//_find(this.storeInfo.storeInfos,(store)=>{return store.ID==IdStore;}).Code;\r\n const { isNewRetailBCPos } = platform || {};\r\n let address = ''\r\n if (isNewRetailBCPos) {\r\n // address = '/member/memberProfile/FindByStorageCode/'+v;\r\n address = `/marketingtool/MeStorageCard/getCardInfoByCardNo/${v}/${true}`;\r\n return ccApi({code:v}, address, false, false, { method: 'get', timeout_skip: true })\r\n .then(async(result)=>{\r\n let data=result.data;\r\n let m=(data && data.length && data[0]);\r\n if (result && result.data.length) {\r\n if (result.data.length === 1) {\r\n if (m.CardTypeEnum === 'BALANCE_CARD') {\r\n this.paymode.updateCardInfo(m);\r\n this.handleCzkData(m);\r\n return result.data;\r\n } else {\r\n // 校验储值卡是否可用\r\n await ccApi({dto:this.dto,meStorageCardId:m.MeStorageCardId}, '/retail/RetailPos/validateRetailStorageCard', false, false)\r\n .then((result1) => {\r\n let data1 = result1.data ? JSON.parse(result1.data)[0] : {};\r\n if (data1.enable) {\r\n this.paymode.updateCardInfo(m);\r\n this.handleCzkData(m)\r\n return result1.data;\r\n } else {\r\n Message.warn(data1.disableReason);\r\n }\r\n })\r\n }\r\n } else {\r\n if (result.data && result.data.length === 1) {\r\n this.paymode.updateCardInfo(result.data[0]);\r\n return result.data;\r\n } else if (result.data && result.data.length > 1) {\r\n return result.data;\r\n } else {\r\n Message.warn('没有可用储值卡!');\r\n return false;\r\n }\r\n }\r\n // result.data.forEach((m) => {\r\n // if (m.CardTypeEnum === 'BALANCE_CARD') {\r\n // // 会员概念改为卡,把这些字段都放开\r\n // this.paymode.updateCardInfo(m);\r\n // }\r\n // })\r\n }\r\n })\r\n } else {\r\n address = 'AA.DR.newRetailMember.SearchMember'\r\n return tApi({SearchParams:{Key:v,IsSingleMember:true,IdStore,StoreCode}}, address, false, false)\r\n .then((result)=>{\r\n let data=JSON.parse(result.Data);\r\n let m=data && data.length>0 && data[0];\r\n if(!m || !m.ID){\r\n runInAction(()=>{this.paymode.currentMode.errinfo=\"无效的会员卡号\";});\r\n }\r\n else{\r\n runInAction(()=>{\r\n this.paymode.currentMode.errinfo=\"\";\r\n this.paymode.currentMode.member = new Member( m )\r\n this.paymode.currentMode.value=getFixedNumber(this.brefund?this.paymode.receivable:Math.max(this.paymode.receivable,0));\r\n this.updateEvent();\r\n let message='';\r\n if (global.CheckMemberStorageProcessorBlock ) {\r\n message= CheckMemberStorageProcessorBlock.execute(data[0]);\r\n }\r\n if (!String.isNullOrEmpty(message)) {\r\n this.paymode.currentMode.errinfo=message;\r\n }\r\n else if(this.checkReceived(this.paymode.currentMode,\"balance\")){\r\n this.paymode.currentMode.errinfo=\"余额不足\";\r\n }else if(this.paymode.amount>0 && this.paymode.currentMode.value==0){\r\n this.paymode.currentMode.errinfo=\"实收金额必须录入\";\r\n } else {\r\n // 查询成功后将焦点移入下一个输入框\r\n const nextInput = document.querySelector('.czk .received .input');\r\n nextInput && nextInput.focus();\r\n }\r\n });\r\n }\r\n })\r\n }\r\n }\r\n getCouponList = coupon_code => {\r\n const { PayStyle, Differentiate } = enumController.getEnumOj();\r\n const couponApplyRule = PosInitData('CouponApplyRule');\r\n const { CouponApplyRule } = enumController.getEnumOj();\r\n if((couponApplyRule == CouponApplyRule.SHOWN_BY_CUSTOMER && !!coupon_code) || couponApplyRule != CouponApplyRule.SHOWN_BY_CUSTOMER){\r\n let dto = this.dto;\r\n let promoVoucher = {};\r\n this.paymode.clearDjqs();\r\n this.paymode.reCalculationDjqs();\r\n promoVoucher.coupon_code = coupon_code || \"\";\r\n promoVoucher.boName = \"Retail\";\r\n promoVoucher.voucherId = dto.ID;\r\n let onlinePaymentAmount=0;\r\n if(dto.OnlinePaymentAmount)\r\n {\r\n onlinePaymentAmount=dto.OnlinePaymentAmount;\r\n }\r\n promoVoucher.promoLinks = _filter(this.paymode.currentMode.djqs,djq=>djq.checked);\r\n promoVoucher.totalAmountWithTax =Math.Minus(dto.TotalTaxAmount,onlinePaymentAmount);\r\n promoVoucher.redBlueFlagEnum = \"BLUE\";\r\n promoVoucher.meMemberId = dto.Idmember;\r\n promoVoucher.storeFactorId = dto.Idstore;\r\n promoVoucher.voucherDetailList = [];\r\n dto.RetailDetails.forEach(item => {\r\n let detailDTO = {};\r\n detailDTO.uuid = item.Code;\r\n detailDTO.detailBoName = \"RetailDetail\";\r\n detailDTO.voucherDetailId = item.ID;\r\n detailDTO.productId = item.Idinventory;\r\n detailDTO.uomId = item.Idunit;\r\n detailDTO.productSpecId=item.ProductSpecId;\r\n detailDTO.isManualFreeGift = item.IsPresent;\r\n detailDTO.isListPriceIncludingTax = item.TaxFlag || true;\r\n detailDTO.IsManualChangePrice = item.IsManualChangePrice;\r\n // if(detailDTO.IsManualChangePrice)//如果是手工改价\r\n // {\r\n // detailDTO.listPrice = item.TaxPrice;\r\n // detailDTO.netAmountWithTax = item.TaxAmount;\r\n // }\r\n // else\r\n // {\r\n let bookingQuantity=0;\r\n if(item.BookingQuantity)\r\n {\r\n bookingQuantity=item.BookingQuantity;\r\n }\r\n detailDTO.listPrice = JSON.getCellValue(item, \"listPrice\");\r\n detailDTO.netAmountWithTax = Math.Multiply(detailDTO.listPrice,Math.Minus(item.Quantity,bookingQuantity));//item.TaxAmount;\r\n //} \r\n detailDTO.taxRate = item.TaxRate;\r\n detailDTO.quantity = item.Quantity;\r\n \r\n detailDTO.amountWithTax = item.RetailAmount;\r\n // 促销 start\r\n if(item.PromotionDetails && item.PromotionDetails.length != 0){\r\n let promoLinks = [];\r\n item.PromotionDetails.forEach((promotion)=>{\r\n promoLinks.push({\r\n promoId:promotion.IdSalesPromotionDTO,\r\n promoRuleId:promotion.PromotionRuleId\r\n })\r\n })\r\n if(promoLinks.length != 0) detailDTO.promoLinks = promoLinks;\r\n }\r\n // 促销 end\r\n promoVoucher.voucherDetailList.push(detailDTO);\r\n });\r\n \r\n return ccApi({\r\n ...promoVoucher\r\n }, 'promotion/PromoCalculate/findUsefulCouponPromoList', false, false,{method:'post',timeout_skip:true})\r\n .then((result)=>{\r\n if(result && result.length != 0 ){\r\n result.forEach((element)=>{\r\n const { couponCode, name, tieredAmountResult, fromDate , dateMount , promoMethodEnum , discountPct, nominalAmount,promoId,id} = element || {};\r\n const { condValue, promoDiscount,displayText,promoRuleId, couponCategoryEnum } = tieredAmountResult\r\n if (result.IsRepelWithPoints && _find(this.paymode.thePaymodes, (themode) => { return themode.paymentType == PayStyle.jfdx; })) {\r\n Message.error(`${Differentiate.COUPON}(${result.SN})不可与积分一起使用`);\r\n }\r\n else {\r\n let IsEnable = (couponCategoryEnum === 'RIGUP' || couponCategoryEnum === 'UN_MATCH' || couponCategoryEnum === \"PREPARING\" || couponCategoryEnum === 'PROMO_LIMITED' || couponCategoryEnum === 'COUPON_CONFLICT') ? false : true ;\r\n this.addDjq(\r\n couponCode,\r\n name,\r\n IsEnable,\r\n promoMethodEnum == \"CASH_COUPON\" && nominalAmount,\r\n promoDiscount,\r\n condValue, \r\n null,\r\n false, \r\n !result.IsRepelWithPoints, \r\n dto.Idmember,\r\n dateMount,\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n couponCategoryEnum,\r\n id,\r\n true, 1)\r\n }\r\n })\r\n if(promoVoucher.coupon_code){\r\n this.paymode.calcDjqCheckValue(this.paymode.currentMode.djqs[0], this.dto, 'single')\r\n }\r\n }else{\r\n if (promoVoucher.coupon_code) {\r\n Message.info(`${Differentiate.COUPON}号不存在!`);\r\n this.getCouponList();\r\n } else {\r\n Message.info(`没有找到可使用的${Differentiate.COUPON}!`)\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n getSettleGift = () => {\r\n return ccApi({ }, `/marketingtool/paygift/executeRightsForPos/${this.billID}`, false, false, { method: 'get', timeout_skip: true });\r\n }\r\n\r\n checkCoupon = async (sn) => {\r\n let { isNewRetailBCPos } = platform || {};\r\n if (isNewRetailBCPos) {\r\n return await this.getCouponList(sn, 'sinlge');\r\n } else {\r\n const { PayStyle, Differentiate } = enumController.getEnumOj();\r\n return tApi({request:{\r\n Uid:this.paymode.currentMode.member.uid || '',\r\n SN:sn,\r\n StoreCode:this.dto.Idstore,\r\n Inventories:_map(_filter(this.dto.RetailDetails,(d)=>{return d.Quantity>0 && !d.IsPresent}),(detail)=>{return {\r\n IdInventory:detail.Inventory.ID,\r\n IdUnit:detail.Idunit,\r\n Code:detail.Inventory.Code,\r\n FreeItem0:JSON.getCellValue(detail,\"freeitem0\"),\r\n FreeItem1:JSON.getCellValue(detail,\"freeitem1\"),\r\n FreeItem2:JSON.getCellValue(detail,\"freeitem2\"),\r\n FreeItem3:JSON.getCellValue(detail,\"freeitem3\"),\r\n FreeItem4:JSON.getCellValue(detail,\"freeitem4\"),\r\n FreeItem5:JSON.getCellValue(detail,\"freeitem5\"),\r\n FreeItem6:JSON.getCellValue(detail,\"freeitem6\"),\r\n FreeItem7:JSON.getCellValue(detail,\"freeitem7\"),\r\n FreeItem8:JSON.getCellValue(detail,\"freeitem8\"),\r\n FreeItem9:JSON.getCellValue(detail,\"freeitem9\"),\r\n }}),\r\n // inventoryCodes:_join(_map(this.dto.RetailDetails,(detail)=>{return detail.Inventory.Code;}),','),\r\n InventoryClassCodes:_join(_map(_filter(this.dto.RetailDetails,(d)=>{return d.Quantity>0}),(detail)=>{return (detail.Inventory.InventoryClass||{Code:''}).Code;}),','),\r\n Amount:this.paymode.amount\r\n }}, 'chanjet.AA.DR.coupon.CheckCoupon', false, false)\r\n .then((result)=>{\r\n if(_find(this.paymode.currentMode.djqs,(djq)=>{return djq.code==result.SN})){\r\n Message.info(`${Differentiate.COUPON}已添加`);\r\n }else if(result.IsRepelWithPoints && _find(this.paymode.thePaymodes,(themode)=>{return themode.paymentType==PayStyle.jfdx;})){\r\n Message.error(`${Differentiate.COUPON}(${result.SN})不可与积分一起使用`);\r\n }\r\n else{\r\n this.addDjq(\r\n result.SN,\r\n result.Title,\r\n result.ReduceAmount,\r\n result.StartAmount,\r\n result.LastTS,\r\n false,\r\n !result.IsRepelWithPoints,\r\n result.UMemberID)\r\n }\r\n \r\n })\r\n }\r\n }\r\n @action addDjq(\r\n promoCouponCode,\r\n name,\r\n IsEnable,\r\n nominalAmount,\r\n amount,\r\n doorsill,\r\n LastTS,\r\n checked,\r\n IsRepelWithPoints,\r\n UMemberID,\r\n expired,\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n couponCategoryEnum,\r\n id,\r\n unCheck,count\r\n ){\r\n let djq={\r\n code: promoCouponCode,\r\n promoCouponCode,\r\n name,\r\n IsEnable,\r\n nominalAmount,\r\n amount,\r\n doorsill,//:\"无门槛\"\r\n LastTS,\r\n checked,\r\n IsRepelWithPoints,\r\n UMemberID,\r\n expired, //还剩多少过期\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n couponCategoryEnum,\r\n id,\r\n count: (count === 1 && (couponCategoryEnum === 'RIGUP' || couponCategoryEnum === 'UN_MATCH' || couponCategoryEnum === \"PREPARING\" || couponCategoryEnum === 'PROMO_LIMITED' || couponCategoryEnum === 'COUPON_CONFLICT') ? 1 : null)\r\n };\r\n this.paymode.currentMode.djqs.push(\r\n djq\r\n );\r\n // let copyData = _clonedeep(this.data[targetIndex]);\r\n !unCheck && !this.boriginReturn && this.paymode.calcDjqValue(djq);\r\n }\r\n\r\n setCurrentMode(id,type,append){\r\n const { PayStyle } = enumController.getEnumOj();\r\n const mode=_find(this.paymode.thePaymodes,{paymethodId:id});\r\n if(mode){\r\n this.paymode.currentMode=mode;\r\n if(this.newStyle){\r\n this.afterSetCurrentMode(type);\r\n }\r\n }else{\r\n this.paymode.currentMode=this.genNewMode(type,append);\r\n this.afterSetCurrentMode(type);\r\n }\r\n }\r\n afterSetCurrentMode(type){\r\n const { PayStyle } = enumController.getEnumOj();\r\n if(type==PayStyle.djq){\r\n this.paymode.calcDjqValue();\r\n }else if(type==PayStyle.jfdx){\r\n //获取可兑换的金额\r\n if(this.newStyle){\r\n const themode=_find(this.paymode.thePaymodes,{paymentType:PayStyle.jfdx});\r\n if(themode && parseFloat(themode.value||0)!=0){\r\n this.paymode.currentMode.value=themode.value;\r\n }\r\n }\r\n \r\n tApi({IntegralSteadCashParams:{\r\n Idmember:this.paymode.currentMode.memberId,\r\n TotalTaxAmount:this.paymode.amount,\r\n BalanceTaxAmount:this.paymode.amount,\r\n }}, 'AA.DR.newRetailMember.CalculdateIntegralSteadCash', false, false).then((result)=>{\r\n this.paymode.currentMode.member.setExchangable(result.MaxAmount);\r\n this.paymode.currentMode.perIntegral=result.perIntegral;\r\n this.paymode.currentMode.cashAmount=result.cashAmount;\r\n this.paymode.currentMode.integralCashOverOrderAmount=result.integralCashOverOrderAmount;\r\n this.updateEvent();\r\n if(this.checkReceived(this.paymode.currentMode,\"exchangable\")){\r\n runInAction(()=>{this.paymode.currentMode.errinfo='余额不足'})\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n\r\n checkReceived(mode,name){\r\n return !this.brefund && parseFloat(mode.value)>parseFloat(mode.maxamount || mode.member[name]||0);\r\n }\r\n\r\n genNewMode(type,notwithm,v,isQuick){\r\n const { PayStyle } = enumController.getEnumOj();\r\n let value=getFixedNumber(v || (this.brefund?this.paymode.receivable:Math.max(this.paymode.receivable,0)));\r\n let themode=_find(this.paymode.paymodes,{'paymentType':type});\r\n let memberId = (this.member && this.member.ID ? this.member.ID : null);\r\n const mode = observable({\r\n paymethodId:this.paymode.counter,\r\n name:themode.name,\r\n exchangeRate:themode.exchangeRate,\r\n calDirection:themode.calDirection,\r\n thridPayment: themode.thridPayment,\r\n value,\r\n value2:getFixedNumber(themode.calDirection==\"88\"?value / themode.exchangeRate:(value * themode.exchangeRate)),\r\n value3:value,\r\n order:this.paymode.thePaymodes.length+1,\r\n paymentType:type,\r\n djqs:[],\r\n card: null,\r\n memberId: !notwithm?memberId:null,\r\n member:new Member(!notwithm?this.member:null),\r\n authCode:'',\r\n steadCashIntegral:null,\r\n errinfo:'',\r\n maxamount:this.paymode.amount,\r\n });\r\n if(type==PayStyle.hyczk){\r\n if(!mode.storageCardNo){\r\n runInAction(()=>{mode.errinfo='未录入手机号或储值卡号'})\r\n }else if(this.checkReceived(mode,\"balance\")){\r\n runInAction(()=>{mode.errinfo='余额不足'})\r\n }\r\n\r\n }\r\n if(type==PayStyle.hyczk || type==PayStyle.jfdx || type==PayStyle.djq){\r\n this.setMaxAmount(type,mode);\r\n }\r\n console.log(`当前操作结算方式信息:${mode}`);\r\n return mode;\r\n }\r\n\r\n setMaxAmount(type,mode){\r\n const { PayStyle } = enumController.getEnumOj();\r\n let sum=0;\r\n if(type==PayStyle.hyczk){\r\n _each(_filter(this.paymode.thePaymodes,(m)=>{return m.paymentType==type;}),(q)=>{\r\n sum=Math.Add(sum,q.value);\r\n });\r\n }else if(type==PayStyle.djq || type==PayStyle.jfdx){\r\n _each(_filter(this.paymode.thePaymodes,(m)=>{return m.paymentType==PayStyle.djq || m.paymentType==PayStyle.jfdx;}),(q)=>{\r\n sum=Math.Add(sum,q.value);\r\n });\r\n }\r\n\r\n this.amountHandler && this.amountHandler(type).then(()=>{\r\n runInAction(()=>{\r\n mode.maxamount=getFixedNumber(Math.Minus(this.context.viewModel.getViewItem('Voucher').availableAmount,sum));\r\n this.updateEvent();\r\n })\r\n })\r\n }\r\n\r\n @action changeFocusOnly(type){\r\n this.paymode.currentFocus=type;\r\n }\r\n\r\n @action changeClickFocusOnly(type) {\r\n this.paymode.currentFocus=type;\r\n // 获取焦点时带入剩余的值\r\n let mode=_find(this.paymode.thePaymodes,{'paymentType':type});\r\n if(mode){\r\n const shouldSetValue =getFixedNumber(parseFloat(this.paymode.receivable) + parseFloat(mode.value));\r\n mode.value = shouldSetValue;\r\n mode.value2 = getFixedNumber(mode.calDirection==\"88\"?shouldSetValue / mode.exchangeRate:(shouldSetValue * mode.exchangeRate));\r\n mode.value3 = shouldSetValue;\r\n this.paymode.calcReserved();\r\n }\r\n }\r\n\r\n @action changeValue(index,value,blur){\r\n let mode=_find(this.paymode.thePaymodes,{'paymethodId':index});\r\n let v=blur?getFixedNumber(value) : (isNaN(value)&&value!='-'?0.00:value);\r\n if(mode){\r\n if(mode.exchangeRate != 1){\r\n if(getFixedNumber(mode.calDirection==\"88\"?mode.value3 / mode.exchangeRate:(mode.value3 * mode.exchangeRate)) !=v){\r\n mode.value=getFixedNumber(mode.calDirection==\"88\"?v*mode.exchangeRate : (v / mode.exchangeRate));\r\n }\r\n else{\r\n mode.value=mode.value3;\r\n }\r\n mode.value2=v;\r\n }else{\r\n mode.value=v;\r\n mode.value2=v;\r\n }\r\n\r\n this.paymode.calcReserved();\r\n }\r\n }\r\n\r\n @action addPayDirectly(pay){\r\n const { PayStyle } = enumController.getEnumOj();\r\n if(!_find(this.paymode.thePaymodes,{paymethodId:pay.paymethodId})){\r\n let pos=this.paymode.thePaymodes.length;\r\n if(pay.paymentType==PayStyle.hyczk){\r\n let index=_findLastIndex(this.paymode.thePaymodes,(m)=>{return m.paymethodId!=pay.paymethodId && m.paymentType==PayStyle.hyczk});\r\n pos=index==-1?pos:(index+1);\r\n }\r\n // this.paymode.thePaymodes.push(pay);\r\n this.paymode.thePaymodes.splice(pos,0,pay);\r\n }\r\n this.paymode.calcReserved();\r\n }\r\n\r\n @action addPay(type, isQuick) {\r\n const { PayStyle } = enumController.getEnumOj();\r\n let pos = this.paymode.thePaymodes.length;\r\n if (type == PayStyle.hyczk) {\r\n let index = _findLastIndex(this.paymode.thePaymodes, (m) => { return m.paymentType == PayStyle.hyczk });\r\n pos = index == -1 ? pos : (index + 1);\r\n }\r\n this.paymode.thePaymodes.splice(pos, 0, this.genNewMode(type, this.newStyle && type == PayStyle.hyczk, undefined, isQuick));\r\n this.paymode.calcReserved();\r\n }\r\n\r\n @action delPay(index){\r\n const { PayStyle } = enumController.getEnumOj();\r\n _remove(this.paymode.thePaymodes,(mode)=>{\r\n return mode.paymethodId===index;\r\n });\r\n this.paymode.currentFocus = -1;\r\n this.paymode.calcReserved();\r\n }\r\n\r\n // 获取储值是否重复, 在commit方法中使用\r\n findStorageBillValidate () {\r\n const { PayStyle } = enumController.getEnumOj();\r\n runInAction(()=>{\r\n this.dto.StorageMutiSettleDetails=[];\r\n const thePaymodes = this.newStyle ?_filter(this.paymode.thePaymodes,(mode)=>{return parseFloat(mode.value)!=0;}):this.paymode.thePaymodes;\r\n _each(thePaymodes,(mode)=>{\r\n const themode=_find(this.paymode.paymodes,{'paymentType':mode.paymentType});\r\n\r\n let value=parseFloat(mode.value);\r\n let giveChange=null;\r\n if(mode.paymentType==PayStyle.xianjin && this.paymode.receivable<0 && value>Math.abs(this.paymode.receivable)){\r\n value=Math.Add(value,this.paymode.receivable);\r\n giveChange=Math.abs(this.paymode.receivable);\r\n }\r\n this.dto.StorageMutiSettleDetails.push({\r\n Code:mode.paymethodId,\r\n StorageAmount:value,\r\n GiveChange:giveChange,\r\n IdsettleStyle:themode.idSettleStyle,\r\n IdbankAccount:themode.idBankAccount,\r\n PaymentCode:mode.authCode,\r\n DynamicPropertyKeys:[],\r\n DynamicPropertyValues:[],\r\n DataSource:{Id:this.dataSource},\r\n })\r\n });\r\n\r\n });\r\n return ccApi(\r\n {...this.dto}, \r\n '/marketingtool/Storage/findStorageBillValidate', \r\n false, \r\n false\r\n )\r\n }\r\n\r\n //判断是否重复弹框\r\n repeatStorageModal = (content) => {\r\n return new Promise((resolve, reject) => {\r\n ModalWraper.confirm({\r\n title: '',\r\n okText: '继续储值',\r\n className: 'repeat-modal',\r\n zIndex: 1007,\r\n content,\r\n onOk: async () => {\r\n let ret = await this.saveMember();\r\n if (ret === false) {\r\n resolve(false)\r\n } else {\r\n resolve(true)\r\n }\r\n },\r\n onCancel() {\r\n resolve(false)\r\n }\r\n })\r\n })\r\n }\r\n\r\n async commit(bTest){\r\n console.log('settlementStore.commit开始,参数:' + bTest);\r\n if (bTest) {\r\n return Promise.resolve(true);\r\n }\r\n const status = this.type;\r\n try {\r\n const paylist = this.paymode.thePaymodes.filter(v => !!v.thridPayment && Math.abs(v.value) > 0) || [];\r\n if (paylist && paylist.length > 1) {\r\n Message.warn('二开支付目前仅支持单一结算方式。');\r\n return Promise.resolve(false);\r\n }\r\n if (status == 1) {\r\n const ret = await this.findStorageBillValidate();\r\n const { data: { code, returnMsg } = {} } = ret || {}\r\n if (code && code == 10001) {\r\n const state = await this.repeatStorageModal(returnMsg);\r\n if (state === false) return Promise.resolve(false);\r\n } else {\r\n let ret1 = await this.saveMember();\r\n if (ret1 === false) {\r\n Promise.resolve(false);\r\n } \r\n }\r\n } else {\r\n await stores.offlineSys.generatorCode(this.dto);\r\n let ret2 = await this.save();\r\n if (ret2 === false) {\r\n return Promise.resolve(false);\r\n }\r\n await stores.offlineSys.retailSequenceUpload();\r\n }\r\n return Promise.resolve(true);\r\n } catch (err) {\r\n console.error('settlementStore.commit失败,错误信息:' + err);\r\n //其他支付失败时,处理二开支付情况。\r\n this.thirdPayRefund(status == 1 ? 2 : 1);\r\n return Promise.resolve(err);\r\n }\r\n }\r\n\r\n handlePrint(resp) {\r\n // 储值打印\r\n return printDispatch(DoNameList.DO_STORAGE_PRINT,resp,{}) \r\n }\r\n\r\n async saveMember(){\r\n const { PayStyle, TradeType } = enumController.getEnumOj();\r\n runInAction(()=>{\r\n this.dto.StorageMutiSettleDetails=[];\r\n const thePaymodes = this.newStyle ?_filter(this.paymode.thePaymodes,(mode)=>{return parseFloat(mode.value)!=0;}):this.paymode.thePaymodes;\r\n _each(thePaymodes,(mode)=>{\r\n const themode=_find(this.paymode.paymodes,{'paymentType':mode.paymentType});\r\n\r\n let value=parseFloat(mode.value);\r\n let giveChange=null;\r\n if(mode.paymentType==PayStyle.xianjin && this.paymode.receivable<0 && value>Math.abs(this.paymode.receivable)){\r\n value=Math.Add(value,this.paymode.receivable);\r\n giveChange=Math.abs(this.paymode.receivable);\r\n }\r\n this.dto.StorageMutiSettleDetails.push({\r\n Code:mode.paymethodId,\r\n StorageAmount:value,\r\n GiveChange:giveChange,\r\n IdsettleStyle:themode.idSettleStyle,\r\n IdbankAccount:themode.idBankAccount,\r\n PaymentCode:mode.authCode,\r\n DynamicPropertyKeys:[],\r\n DynamicPropertyValues:[],\r\n DataSource:{Id:this.dataSource},\r\n ThirdPaymentInfo: themode.thridPayment || null,\r\n ThirdPaymentReturnInfo:mode.thirdPaymentReturnInfo || null\r\n })\r\n });\r\n\r\n });\r\n // cc结算调用\r\n let IPMSG = {};\r\n if (!!window.localStorage.IPMSG) {\r\n IPMSG = JSON.parse(window.localStorage.IPMSG);\r\n }\r\n let dtoParams = this.dto;\r\n //处理存在二开支付情况\r\n let payList = dtoParams.StorageMutiSettleDetails.filter(v => v.ThirdPaymentInfo);\r\n if (payList && payList.length > 0) {\r\n let payment = payList[0];\r\n let tradeType = payment && payment.StorageAmount > 0 ? TradeType.PAY : TradeType.REFUND;\r\n const ret = await this.thirdPay(2, payment, tradeType, dtoParams);\r\n const { type, data, msg, code } = ret || {};\r\n if (type === true) {\r\n dtoParams = data;\r\n } else {\r\n Message.warn(`刷卡支付失败,错误码:${code}`);\r\n return false;\r\n }\r\n }\r\n this.dtoParams = dtoParams;\r\n console.log('储值结算信息:', dtoParams);\r\n return tApi({ dto: dtoParams }, 'chanjet.ME.INewRetailMemberStorage.Save', false, false).then((resp) => {\r\n this.handlePrint(resp);\r\n });\r\n }\r\n\r\n async save(){\r\n const { PayStyle, TradeType } = enumController.getEnumOj();\r\n runInAction(()=>{\r\n this.dto.RetailPaymentDetails=[];\r\n this.dto.RetailStorageDetails=[];\r\n this.dto.RetailCouponDetails=[];\r\n let czkSum=0;\r\n let count = 0;\r\n const thePaymodes = this.newStyle ?_filter(this.paymode.thePaymodes,(mode)=>{return parseFloat(mode.value)!=0;}):this.paymode.thePaymodes;\r\n _each(thePaymodes,(mode, index)=>{\r\n const themode=_find(this.paymode.paymodes,{'paymentType':mode.paymentType});\r\n if(mode.paymentType==PayStyle.hyczk){\r\n czkSum=Math.Add(czkSum,mode.value);\r\n this.dto.RetailStorageDetails.push({\r\n Code:mode.paymethodId,\r\n MeStorageCardId: mode.meStorageCardId,\r\n StoragePaymentAmount:mode.value,\r\n IsOrigReturn:false,\r\n BalanceStorage:mode.balance,\r\n Idmember:mode.memberId,\r\n DynamicPropertyKeys:[],\r\n DynamicPropertyValues:[],\r\n DataSource:{Id:this.dataSource},\r\n Password:mode.authCode,\r\n })\r\n }else{\r\n let value=parseFloat(mode.value);\r\n let giveChange=null;\r\n if(mode.paymentType==PayStyle.xianjin && this.paymode.receivable<0 && value>Math.abs(this.paymode.receivable)){\r\n value=Math.Add(value,this.paymode.receivable);\r\n giveChange=Math.abs(this.paymode.receivable);\r\n }\r\n this.dto.RetailPaymentDetails.push({\r\n Code:mode.paymethodId,\r\n OrigAmount:mode.exchangeRate!=1?mode.value2:value,\r\n Amount:value,\r\n GiveChange:giveChange,\r\n IdsettleStyle:themode.idSettleStyle,\r\n IdbankAccount:themode.idBankAccount,\r\n Idcurrency:themode.idCurrency,\r\n ExchangeRate:themode.exchangeRate,\r\n PaymentCode:mode.authCode,\r\n SteadCashIntegral:mode.steadCashIntegral,\r\n OverchargesAmount:mode.overchargesAmount,\r\n DynamicPropertyKeys:[],\r\n DynamicPropertyValues:[],\r\n DataSource:{Id:this.dataSource},\r\n ThirdPaymentInfo: themode.thridPayment || null,\r\n ThirdPaymentReturnInfo:mode.thirdPaymentReturnInfo || null\r\n })\r\n if(mode.paymentType==PayStyle.djq){\r\n _each(this.paymode.checkList && this.paymode.checkList.length ? this.paymode.checkList: mode.djqs,(djq)=>{\r\n this.dto.RetailCouponDetails.push({\r\n CouponCode:djq.promoCouponCode,\r\n ReductionAmount:djq.amount,\r\n EnableAmount:djq.doorsill,\r\n CouponTitle:djq.name,\r\n IdMember:djq.UMemberID?mode.memberId:null,\r\n LastTS:djq.LastTS,\r\n PromotionId:djq.promoId,\r\n PromotionRuleId:djq.promoRuleId,\r\n PromoCouponAllocatedId:djq.id,\r\n DataSource:{Id:this.dataSource},\r\n })\r\n })\r\n }\r\n }\r\n });\r\n if (this.dto.RetailStorageDetails.length > 0) {\r\n const themode = _find(this.paymode.paymodes, { 'paymentType': PayStyle.hyczk });\r\n this.dto.RetailPaymentDetails.push({\r\n Code: this.paymode.counter,\r\n OrigAmount: czkSum,\r\n Amount: czkSum,\r\n IdsettleStyle: themode.idSettleStyle,\r\n IdbankAccount: themode.idBankAccount,\r\n DynamicPropertyKeys: [],\r\n DynamicPropertyValues: [],\r\n DataSource: { Id: this.dataSource },\r\n RetailStorageDetails: this.dto.RetailStorageDetails,\r\n })\r\n }\r\n });\r\n console.log(`结算数据:`, this.dto);\r\n // cc结算调用\r\n let IPMSG = {};\r\n if (!!window.localStorage.IPMSG) {\r\n IPMSG = JSON.parse(window.localStorage.IPMSG);\r\n }\r\n const RetailTypeEnum = this.dto.IdbusiType == 36 ? \"INTEGRAL_EXCHANGE\" : \"NORMAL\";\r\n if (this.dto.IdbusiType == 37 && await this.checkIntegralExchangeReturn(this.dto.RetailDetails[0].ReturnSourceId) || this.dto.IdbusiType != 37) {\r\n let dtoParams = { ...this.dto.cut(), RetailOms: { RetailTypeEnum } };\r\n //处理存在二开支付情况\r\n let payList = dtoParams.RetailPaymentDetails.filter(v => v.ThirdPaymentInfo);\r\n if (payList && payList.length > 0) {\r\n let payment = payList[0];\r\n let tradeType = payment && payment.Amount > 0 ? TradeType.PAY : TradeType.REFUND;\r\n const ret = await this.thirdPay(1, payment, tradeType, dtoParams);\r\n const { type, data, msg, code } = ret || {};\r\n if (type === true) {\r\n dtoParams = data;\r\n } else {\r\n Message.warn(`刷卡支付失败,错误码:${code}`);\r\n return false;\r\n }\r\n }\r\n this.dtoParams = dtoParams;\r\n console.log('结算信息:', dtoParams);\r\n return ccApi({ dto: dtoParams, cip: IPMSG.query || \"\" }, '/retail/RetailPos/settle', false, false, { method: 'post', timeout_skip: true }).then((resp) => {\r\n const { ID } = resp || {};\r\n this.setDtoID(ID);\r\n this.billID = ID;\r\n this.paymode.checkList = [];\r\n })\r\n } \r\n }\r\n\r\n //裁剪二开支付数据\r\n removeThirdPayDto(dto) {\r\n let data = {...dto};\r\n delete data['DynamicPropertyKeys'];\r\n delete data['DynamicPropertyValues'];\r\n return data;\r\n }\r\n\r\n /** \r\n * 二开支付\r\n * vType:1零售单、2储值单\r\n * payment:结算方式\r\n * trade:00表示结算、02表示退款\r\n * dto:结算数据集合\r\n */\r\n async thirdPay(vType, payment, trade, dto) {\r\n try {\r\n let cto = this.removeThirdPayDto(dto);\r\n const params = { VoucherType: vType, Payment: payment, TradeType: trade, dto: cto };\r\n console.log('刷卡信息:', JSON.stringify(params));\r\n let ret = await new Promise((resolve, reject) => {\r\n nativeMs.setIpcRendererMethod('ThirdPayment', { ...params }, res => {\r\n return resolve(res);\r\n })\r\n })\r\n console.log('刷卡返回信息:', ret);\r\n ret = JSON.parse(ret);\r\n const { Code, Message, Result } = ret || {};\r\n if (Code > 0) {\r\n return { type: false, data: null, msg: Message, code: Code };\r\n } else if (trade == '00') {\r\n const { ThirdPaymentReturnInfo } = Result || {};\r\n if (vType == 1) {\r\n dto.RetailPaymentDetails.forEach(v => {\r\n if (v.ThirdPaymentInfo != null && Math.abs(v.Amount) > 0) {\r\n v.ThirdPaymentReturnInfo = ThirdPaymentReturnInfo;\r\n }\r\n })\r\n } else if (vType == 2) {\r\n dto.StorageMutiSettleDetails.forEach(v => {\r\n if (v.ThirdPaymentInfo != null && Math.abs(v.StorageAmount) > 0) {\r\n v.ThirdPaymentReturnInfo = ThirdPaymentReturnInfo;\r\n }\r\n })\r\n }\r\n return { type: true, data: dto, msg: Message, code: Code };\r\n } else if (trade == '02') {\r\n return { type: true, data: dto, msg: Message, code: Code };\r\n }\r\n } catch (ex) {\r\n return { type: false, data: null, msg: ex, code: '9999' }\r\n }\r\n }\r\n\r\n //二开支付强制退款情况\r\n async thirdPayRefund(type) {\r\n const dto = (type == 1) ? this.dtoParams.RetailPaymentDetails : this.dtoParams.StorageMutiSettleDetails;\r\n const pay = dto && dto.filter(v => v.ThirdPaymentInfo);\r\n if (pay && pay.length > 0) {\r\n setTimeout(() => {\r\n Message.warn(\"支付出现异常,将发起刷卡退款。\", { duration: 4.5 })\r\n }, 1000);\r\n const payment = pay[0];\r\n const { TradeType } = enumController.getEnumOj();\r\n setTimeout(async () => {\r\n let ret = await this.thirdPay(type, payment, TradeType.REFUND, dto);\r\n const { msg } = ret || {};\r\n console.log(`刷卡支付退款:${msg}`);\r\n }, 4500);\r\n }\r\n }\r\n\r\n @action setDtoID(id){\r\n this.context.viewModel.data.ID=id;\r\n }\r\n\r\n checkIntegralExchangeReturn = (id) => {\r\n return new Promise((resolve, reject) => {\r\n tApi({param: {refVoucherId:id}}, 'chanjet.RE.NewPos.GetNewIntegralExchange', false, false,{timeout_skip:true}).then((resp) => {\r\n if( resp && resp.expireIntegral>0){\r\n ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n title: \"温馨提示\",\r\n content:`存在已经过期的积分${resp.expireIntegral}退货后积分不会返还。是否继续退货?`,\r\n cancelable: false,\r\n onOk() {\r\n resolve(true);\r\n },\r\n onCancel() {\r\n reject(false);\r\n }\r\n })\r\n }else{\r\n resolve(true);\r\n }\r\n })\r\n })\r\n }\r\n\r\n async querySettleResult(){\r\n try{\r\n return Promise.resolve(await tApi({RetailCode: this.dto.Code}, 'chanjet.RE.newRetail.QuerySettleResult', false, false,{timeout_skip:true}));\r\n }catch(e){\r\n return Promise.resolve({Flag:\"1\"});\r\n }\r\n }\r\n\r\n setCookie(key, val) {\r\n var exp = new Date();\r\n exp.setTime(moment().endOf('day').valueOf());\r\n document.cookie = key + '=' + val + ';expires=' + exp.toGMTString();\r\n }\r\n\r\n getAllCookies() {\r\n var cookies = document.cookie.split(/;\\s/g);\r\n var cookieObj = {};\r\n cookies.forEach(function (item) {\r\n var key = item.split('=')[0];\r\n cookieObj[key] = item.split('=')[1];\r\n });\r\n return cookieObj;\r\n }\r\n\r\n async validePwd(value){\r\n let { isNewRetailBCPos } = platform || {};\r\n try{\r\n if (isNewRetailBCPos) {\r\n let cook1 = this.getAllCookies()['errorPwd'];\r\n let cook2 = cook1 && JSON.parse(cook1);\r\n let message = '密码输入错误';\r\n let memberStorageId = this.paymode.currentMode.meStorageCardId;\r\n if (cook2) {\r\n if (cook2.hasOwnProperty(memberStorageId + \"\")) {\r\n if (cook2[memberStorageId] > 3) {\r\n message = '今日密码错误已达上限,不可使用储值消费,请明日再试,如忘记请重置密码或修改密码。';\r\n return Promise.resolve(message);\r\n }\r\n }\r\n }\r\n const {cardTypeEnum, memberId, meStorageCardId, cardStatusEnum} = this.paymode.currentMode;\r\n let result = null;\r\n if (cardTypeEnum === 'BALANCE_CARD') {\r\n result = await ccApi({md5Password: User.pwdEncrypt(value.pwd), cardType: cardTypeEnum}, `/member/MeMemberWallet/checkPaymentPassword/${memberId}`, false, false);\r\n } else {\r\n if (cardStatusEnum === 'BINDING' && this.member && this.member.ID === memberId) {\r\n result = await ccApi({md5Password: User.pwdEncrypt(value.pwd), password: value.pwd, cardType: cardTypeEnum}, `/member/MeMemberWallet/checkPaymentPassword/${meStorageCardId}`, false, false);\r\n } else {\r\n result = await ccApi({password: value.pwd, cardType: cardTypeEnum}, `/member/MeMemberWallet/checkPaymentPassword/${meStorageCardId}`, false, false);\r\n }\r\n }\r\n if (!result.data) {\r\n if (cook2) {\r\n if (cook2.hasOwnProperty(memberStorageId + \"\")) {\r\n let count = cook2[memberStorageId];\r\n cook2[memberStorageId] = count + 1;\r\n } else {\r\n cook2[memberStorageId] = 1; \r\n }\r\n } else {\r\n cook2 = {};\r\n cook2[memberStorageId] = 1; \r\n }\r\n this.setCookie('errorPwd', '', -1);\r\n this.setCookie('errorPwd', JSON.stringify(cook2));\r\n }\r\n return Promise.resolve(result.data?\"\":message);\r\n } else {\r\n const result = await tApi({\"CheckoutParams\": {\r\n \"Idmember\": value.id,\r\n \"Password\":value.pwd\r\n }}, 'AA.DR.newRetailMember.CheckoutMemberPassword', false, false);\r\n return Promise.resolve(result.Success?\"\":result.Message);\r\n }\r\n }catch(e){\r\n return \"failed\";\r\n }\r\n }\r\n}\r\n\r\nexport class PayMode{\r\n _counter=0\r\n amount=0 //应收\r\n onlineamount=0\r\n maxamount=0;\r\n @observable currentFocus=\"\"\r\n @observable received=0;\r\n @observable receivable=0;\r\n @observable paymodes =[]\r\n @observable thePaymodes=[]\r\n @observable storageCardNo = null;\r\n @observable balance = null;\r\n // @observable store = null;\r\n currentMode=null;\r\n checkList = [];\r\n updateEvent\r\n settle={\r\n name:\"复合结算\",\r\n hotKey:\"Ctrl+M\",\r\n }\r\n constructor (){\r\n // this.amount=getFixedNumber(amount);\r\n // this.calcReserved();\r\n }\r\n\r\n @action clean(){\r\n this.thePaymodes=[];\r\n this.calcReserved();\r\n }\r\n\r\n @action clear(){\r\n this.thePaymodes=[];\r\n this.calcReserved();\r\n this.paymodes = [];\r\n }\r\n\r\n setAmount(a,o){\r\n this.amount=getFixedNumber((a || 0)-(o || 0));\r\n this.onlineamount=getFixedNumber(o || 0);\r\n this.calcReserved();\r\n return this.amount<0;\r\n }\r\n\r\n @action calcReserved(){\r\n var sum=0;\r\n _each(this.thePaymodes,(mode)=>{\r\n sum=Math.Add(sum,(mode.value==\"\"?0:mode.value));\r\n });\r\n this.received = getFixedNumber(sum);\r\n this.receivable = getFixedNumber(this.amount - sum);\r\n }\r\n\r\n @action calcCheckList = () => {\r\n this.checkList = [];\r\n }\r\n\r\n @action updateMemberStorageCardNo(storageCardNo, walletEnabled) {\r\n this.currentMode.storageCardNo = storageCardNo;\r\n this.currentMode.walletEnabled = walletEnabled;\r\n }\r\n\r\n @action updateCardInfo(m) {\r\n this.currentMode.cardStatusEnum = m.CardStatusEnum;\r\n this.currentMode.isNeedPassword = m.IsNeedPassword;\r\n this.currentMode.meStorageCardId = m.MeStorageCardId;\r\n this.currentMode.storageCardNo = m.StorageCardNo;\r\n this.currentMode.balance = m.BalanceStorage;\r\n this.currentMode.rawbalance = m.BalanceStorage;\r\n this.currentMode.cardTypeEnum = m.CardTypeEnum;\r\n this.currentMode.walletEnabled = m.WalletEnabled;\r\n this.currentMode.memberId = m.ID;\r\n this.currentMode.freePaymentPasswordStore = m.FreePaymentPasswordStore;\r\n }\r\n\r\n @action calcDjqCheckValue(q1, dto, params) {\r\n let useLimitPerOrder = PosInitData('UseLimitPerOrder');\r\n let qList = _filter(this.currentMode.djqs,djq=>djq.checked);\r\n if (qList.length === useLimitPerOrder && !q1.checked) {\r\n Message.warn('本单最多可用'+useLimitPerOrder+'张');\r\n return;\r\n }\r\n if (params === 'single') {\r\n this.checkList = [];\r\n }\r\n\r\n let { isNewRetailBCPos } = platform || {};\r\n const { PayStyle, Differentiate } = enumController.getEnumOj();\r\n\r\n if(q1){\r\n if(!this.currentMode.boriginReturn && parseFloat(this.currentMode.maxamount)<=0){\r\n Message.error(`本单没有${Differentiate.COUPON}可用金额,该券不可使用。`);\r\n return ;\r\n }\r\n let q=_find(this.currentMode.djqs,(djq)=>{return djq.promoCouponCode==q1.promoCouponCode});\r\n if(q && !q.checked && parseFloat(this.amount)<parseFloat(q.doorsill)){\r\n Message.error(\"本单金额低于使用门槛,该券不可使用。\");\r\n return ;\r\n }\r\n //判断是否是选择优惠券 //CC优惠券只能使用一个\r\n // if (q1 && !q1.checked && isNewRetailBCPos) {\r\n // // 检查是否有已经选定优惠券 并且去除选定的优惠券\r\n // this.currentMode.djqs.forEach((djq, index) => {\r\n // if (djq.checked) this.currentMode.djqs[index].checked = false;\r\n // })\r\n // }\r\n q && (q.checked = !q.checked);\r\n }\r\n var sum=0;\r\n // console.log(this.store, 'stores-------');\r\n if (!q1.checked) {\r\n this.checkList.forEach((ele, i) => {\r\n if (ele.id === q1.id) {\r\n this.checkList.splice(i, 1);\r\n }\r\n })\r\n } else {\r\n this.checkList.push(q1);\r\n }\r\n\r\n this.checkList.forEach((ele) => {\r\n sum=Math.Add(sum,ele.amount);\r\n })\r\n this.currentMode.value = getFixedNumber(Math.min(this.receivable,sum,this.currentMode.maxamount));\r\n console.log(this.receivable, sum, Math.min(this.receivable,sum,this.currentMode.maxamount), 'sum---------');\r\n this.currentMode.receivable = getFixedNumber(this.receivable - Math.min(this.receivable,sum,this.currentMode.maxamount));\r\n this.currentMode.overchargesAmount=getFixedNumber(sum-this.currentMode.value);\r\n if (params === 'single') {\r\n return;\r\n }\r\n let promoVoucher = {};\r\n promoVoucher.boName = \"Retail\";\r\n // promoVoucher.promoLinks = _filter(this.currentMode.djqs,djq=>djq.checked);\r\n promoVoucher.meMemberId = this.currentMode.member.id;\r\n promoVoucher.storeFactorId = PosInitData('storeID');\r\n promoVoucher.voucherDetailList = [];\r\n dto.RetailDetails.forEach(item => {\r\n let detailDTO = {};\r\n detailDTO.uuid = item.Code;\r\n detailDTO.detailBoName = \"RetailDetail\";\r\n detailDTO.voucherDetailId = item.ID;\r\n detailDTO.productId = item.Idinventory;\r\n detailDTO.uomId = item.Idunit;\r\n detailDTO.productSpecId=item.ProductSpecId;\r\n detailDTO.isManualFreeGift = item.IsPresent;\r\n detailDTO.isListPriceIncludingTax = item.TaxFlag || true;\r\n detailDTO.IsManualChangePrice = item.IsManualChangePrice;\r\n\r\n \r\n\r\n // if(detailDTO.IsManualChangePrice)//如果是手工改价\r\n // {\r\n // detailDTO.listPrice = item.TaxPrice;\r\n // detailDTO.netAmountWithTax = item.TaxAmount;\r\n // }\r\n // else\r\n // {\r\n let bookingQuantity=0;\r\n if(item.BookingQuantity)\r\n {\r\n bookingQuantity=item.BookingQuantity;\r\n }\r\n detailDTO.listPrice = JSON.getCellValue(item, \"listPrice\");\r\n detailDTO.netAmountWithTax = Math.Multiply(detailDTO.listPrice,Math.Minus(item.Quantity,bookingQuantity));//item.TaxAmount;\r\n //} \r\n detailDTO.taxRate = item.TaxRate;\r\n detailDTO.quantity = item.Quantity;\r\n \r\n detailDTO.amountWithTax = item.RetailAmount;\r\n // 促销 start\r\n if(item.PromotionDetails && item.PromotionDetails.length != 0){\r\n let promoLinks = [];\r\n item.PromotionDetails.forEach((promotion)=>{\r\n promoLinks.push({\r\n promoId:promotion.IdSalesPromotionDTO,\r\n promoRuleId:promotion.PromotionRuleId\r\n })\r\n })\r\n if(promoLinks.length != 0) detailDTO.promoLinks = promoLinks;\r\n }\r\n // 促销 end\r\n promoVoucher.voucherDetailList.push(detailDTO);\r\n });\r\n promoVoucher.promoLinks = this.checkList;\r\n return ccApi({\r\n ...promoVoucher\r\n }, 'promotion/PromoCalculate/findUsefulCouponPromoList', false, false,{method:'post',timeout_skip:true})\r\n .then((result)=>{\r\n if(result && result.length != 0 ){\r\n result.forEach((element, index) => {\r\n let djq1 = false;\r\n this.currentMode.djqs.forEach((djq) => {\r\n if (element.id === djq.id) {\r\n djq1 = true;\r\n }\r\n })\r\n const { couponCode, name, tieredAmountResult, fromDate , dateMount , promoMethodEnum , discountPct, nominalAmount,promoId,id, doorsill} = element || {};\r\n const { condValue, promoDiscount,displayText,promoRuleId, couponCategoryEnum } = tieredAmountResult\r\n if(!djq1) {\r\n // this.currentMode.djqs.push({\r\n // promoCouponCode: element.CouponCode,\r\n // name: element.CouponTitle,\r\n // IsEnable: true,\r\n // amount: element.ReductionAmount,\r\n // doorsill: element.EnableAmount,\r\n // LastTS: element.LastTS,\r\n // checked: false,\r\n // IsRepelWithPoints: true,\r\n // UMemberID: dto.Idmember,\r\n // expired: null,\r\n // displayText,\r\n // promoMethodEnum,\r\n // discountPct,\r\n // promoId,\r\n // promoRuleId,\r\n // couponCategoryEnum: tieredAmountResult.couponCategoryEnum,\r\n // id\r\n // })\r\n this.addDjqs(couponCode,name,true,nominalAmount,promoDiscount,doorsill,element.LastTS,false,true,\r\n dto.Idmember,\r\n dateMount,\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n tieredAmountResult.couponCategoryEnum,\r\n id);\r\n djq1 = false;\r\n } else {\r\n this.setCouponNum(element.id, couponCategoryEnum, promoMethodEnum, nominalAmount,promoDiscount);\r\n // this.currentMode.djqs[0].couponCategoryEnum = 'couponCategoryEnum';\r\n // djq1.couponCategoryEnum = element.tieredAmountResult.couponCategoryEnum\r\n }\r\n }) \r\n }\r\n // 优惠券【6052098985043】与【6120822326451】不可叠加使用\r\n })\r\n //this.receivable = getFixedNumber(this.receivable - sum);\r\n }\r\n\r\n @action setCouponNum = (id, couponNum, promoMethodEnum, nominalAmount,promoDiscount) => {\r\n this.currentMode.djqs.forEach((ele) => {\r\n if (ele.id === id) {\r\n ele.amount = promoDiscount;\r\n promoMethodEnum == \"CASH_COUPON\" && (ele.nominalAmount = nominalAmount);\r\n ele.couponCategoryEnum = couponNum;\r\n let IsEnable = (ele.couponCategoryEnum === 'RIGUP' || ele.couponCategoryEnum === 'UN_MATCH' || ele.couponCategoryEnum === \"PREPARING\" || ele.couponCategoryEnum === 'PROMO_LIMITED' || ele.couponCategoryEnum === 'COUPON_CONFLICT') ? false : true ;\r\n ele.IsEnable = IsEnable;\r\n }\r\n })\r\n }\r\n\r\n @action addDjqs = (promoCouponCode,\r\n name,\r\n IsEnable,\r\n nominalAmount,\r\n amount,\r\n doorsill,\r\n LastTS,\r\n checked,\r\n IsRepelWithPoints,\r\n UMemberID,\r\n expired,\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n couponCategoryEnum,\r\n id) => {\r\n let djq={\r\n promoCouponCode,\r\n name,\r\n IsEnable,\r\n nominalAmount,\r\n amount,\r\n doorsill,\r\n LastTS,\r\n checked,\r\n IsRepelWithPoints,\r\n UMemberID,\r\n expired,\r\n displayText,\r\n promoMethodEnum,\r\n discountPct,\r\n promoId,\r\n promoRuleId,\r\n couponCategoryEnum,\r\n id\r\n };\r\n this.currentMode.djqs.push(\r\n djq\r\n );\r\n }\r\n\r\n @action calcDjqValue(q1){\r\n let { isNewRetailBCPos } = platform || {};\r\n const { Differentiate } = enumController.getEnumOj();\r\n if(q1){\r\n if(!this.currentMode.boriginReturn && parseFloat(this.currentMode.maxamount)<=0){\r\n Message.error(`本单没有${Differentiate.COUPON}可用金额,该券不可使用。`);\r\n return ;\r\n }\r\n let q=_find(this.currentMode.djqs,(djq)=>{return djq.code==q1.code});\r\n if(q && !q.checked && parseFloat(this.amount)<parseFloat(q.doorsill)){\r\n Message.error(\"本单金额低于使用门槛,该券不可使用。\");\r\n return ;\r\n }\r\n //判断是否是选择优惠券 //CC优惠券只能使用一个\r\n // if (q1 && !q1.checked && isNewRetailBCPos) {\r\n // // 检查是否有已经选定优惠券 并且去除选定的优惠券\r\n // this.currentMode.djqs.forEach((djq, index) => {\r\n // if (djq.checked) this.currentMode.djqs[index].checked = false;\r\n // })\r\n // }\r\n q && (q.checked = !q.checked);\r\n }\r\n var sum=0;\r\n // console.log(this.store, 'stores-------');\r\n _each(_filter(this.currentMode.djqs,djq=>djq.checked),(q)=>{\r\n sum=Math.Add(sum,q.amount);\r\n });\r\n this.currentMode.value = getFixedNumber(Math.min(this.receivable,sum,this.currentMode.maxamount));\r\n this.currentMode.receivable = getFixedNumber(this.receivable -this.currentMode.value);\r\n this.currentMode.overchargesAmount=getFixedNumber(sum-this.currentMode.value);\r\n\r\n //this.receivable = getFixedNumber(this.receivable - sum);\r\n }\r\n\r\n @action reCalculationDjqs() {\r\n var sum=0;\r\n _each(_filter(this.currentMode.djqs,djq=>djq.checked),(q)=>{\r\n sum=Math.Add(sum,q.amount);\r\n });\r\n this.currentMode.value = getFixedNumber(Math.min(this.receivable,sum,this.currentMode.maxamount));\r\n this.currentMode.receivable = getFixedNumber(this.receivable -this.currentMode.value);\r\n this.currentMode.overchargesAmount=getFixedNumber(sum-this.currentMode.value);\r\n this.currentMode.maxamount = this.currentMode.receivable || this.currentMode.receivable;\r\n }\r\n\r\n @action clearDjqs() {\r\n this.currentMode.djqs = [];\r\n }\r\n\r\n @action setCurrentModeValue(v,max){\r\n this.currentMode.value=parseFloat(v) || 0;\r\n this.currentMode.errinfo='';\r\n let sum = this.amount;\r\n const { PayStyle} = enumController.getEnumOj();\r\n this.thePaymodes && this.thePaymodes.forEach((mode) => {\r\n if (mode.paymentType === PayStyle.hyczk) {\r\n sum -= mode.value;\r\n }\r\n })\r\n\r\n if(this.amount>0 && (v==='' || v==='0.00') && sum !== 0){\r\n this.currentMode.errinfo=\"实收金额必须录入\";\r\n }else if(Math.abs(parseFloat(v))>Math.abs(getFixedNumber(sum))){\r\n this.currentMode.errinfo=\"实收不应大于应收\";\r\n }else if(parseFloat(v)>0 && parseFloat(v) > (max || 0) ){\r\n this.currentMode.errinfo=\"余额不足\";\r\n }\r\n // 如果是积分抵现的一些判断\r\n if (this.currentMode.paymentType === PayStyle.jfdx) {\r\n if (this.currentMode.integralCashOverOrderAmount === true) {\r\n this.currentMode.steadCashIntegral = Math.ceil(this.currentMode.value/this.currentMode.cashAmount) * this.currentMode.perIntegral;\r\n } else if(this.currentMode.integralCashOverOrderAmount === false){\r\n let v1 = this.currentMode.value/this.currentMode.cashAmount;\r\n if (Number.isInteger(v1)) {\r\n this.currentMode.steadCashIntegral = Math.floor(this.currentMode.value/this.currentMode.cashAmount) * this.currentMode.perIntegral;\r\n } else {\r\n this.currentMode.errinfo=`请按照积分抵现规则${this.currentMode.perIntegral}积分抵用${this.currentMode.cashAmount}元输入金额`;\r\n }\r\n }\r\n }\r\n }\r\n\r\n @action calcMemberBalance(){\r\n this.currentMode.balance = this.currentMode.rawbalance - this.currentMode.value;\r\n }\r\n\r\n get charge(){\r\n return Math.abs(this.receivable);\r\n }\r\n\r\n get counter(){\r\n return ++this._counter;\r\n }\r\n\r\n async setPaymodes(type,isIntegralExchange){\r\n // 是否移动端判断\r\n const { isHorizontalPad, isHorizontalSunMi } = platform || {};\r\n const isMobileEnvironment = !!isHorizontalPad || !!isHorizontalSunMi;\r\n const { settleStyleType , PayStyle} = enumController.getEnumOj();\r\n const {memberStoreCode , settlementCode } = settleStyleType;\r\n const param = {'settleStyleType':type==1?memberStoreCode:settlementCode,isIntegralExchange}\r\n let modes = await tApi({ param }, 'chanjet.RE.NewPos.GetNewStoreSettleStyles', false, false);\r\n if(modes){\r\n runInAction(()=>{\r\n let paymodes = [];\r\n let settleLists = modes.SettleStyles;\r\n settleLists = isMobileEnvironment ? settleLists.filter(v => !v.ThirdPaymentInfo) : settleLists;\r\n _each(settleLists, (mode, index) => {\r\n //产品需求确认会员储值卡结算方式前端展示统一调整为“储值卡\" tuzha by 2020-07-08\r\n if (mode.Code == PayStyle.hyczk) {\r\n mode.Name = '储值卡';\r\n }\r\n paymodes.push({\r\n name:mode.Name,\r\n isDefault:mode.IsDefaultSettleStyle,\r\n isQuick:_findIndex(modes.QuickSettleStyles, {'Code':mode.Code})>=0,\r\n orderBy:1,\r\n paymentType:mode.Code,\r\n offlineDisable:mode.offlineDisable,\r\n idSettleStyle:mode.IdSettleStyle,\r\n idBankAccount:mode.IdBankAccount,\r\n exchangeRate:mode.Currency?mode.Currency.ExchangeRate:1,\r\n idCurrency:mode.Currency?mode.Currency.ID:-1,\r\n calDirection:mode.Currency?mode.Currency.CalDirection.Id:\"88\",\r\n thridPayment: mode.ThirdPaymentInfo,\r\n })\r\n })\r\n this.paymodes = paymodes;\r\n })\r\n }\r\n }\r\n}\r\n\r\nexport class Member{\r\n id;\r\n uid;\r\n @observable cardNo;\r\n type;\r\n @observable balance;\r\n rawbalance;\r\n needPwd;\r\n bonusPoints;\r\n @observable exchangable;\r\n @observable meStorageCardId;\r\n @observable storageCardNo;\r\n constructor(m){\r\n if(m){\r\n this.id=m.ID;\r\n this.uid=m.Uid;\r\n this.type=m.MemberType?m.MemberType.Name:\"普通\";\r\n this.rawbalance=m.BalanceStorage;\r\n let index=_findIndex(m.DynamicPropertyKeys,(key)=>{return key=='canusedbalancestorage';});\r\n const { isNewRetailBCPos } = platform || {};\r\n runInAction(()=>{\r\n this.cardNo=m.CardCode;\r\n if(index>=0){\r\n this.balance=parseFloat(m.DynamicPropertyValues[index]);\r\n }else{\r\n this.balance=this.rawbalance;\r\n }\r\n });\r\n this.needPwd=m.MemberType?m.MemberType.IsNeedPwd:false;\r\n this.NeedModifyPassword=m.NeedModifyPassword;\r\n this.bonusPoints=m.BalanceIntegral;\r\n }\r\n }\r\n @action setExchangable(v){\r\n this.exchangable=v;\r\n }\r\n @action setCardNo(v){\r\n this.cardNo=v;\r\n this.id=null;\r\n }\r\n}\r\n\r\n"]}
|