Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

poscartitems.component.js 216KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079
  1. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  2. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  3. return new (P || (P = Promise))(function (resolve, reject) {
  4. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  5. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  6. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  7. step((generator = generator.apply(thisArg, _arguments || [])).next());
  8. });
  9. };
  10. var Bizgaze;
  11. (function (Bizgaze) {
  12. let Apps;
  13. (function (Apps) {
  14. let Transact;
  15. (function (Transact) {
  16. let Controls;
  17. (function (Controls) {
  18. class POSCartItems extends Unibase.Platform.Core.BaseComponent {
  19. constructor() {
  20. super(...arguments);
  21. this.g_ValidFocItems = [];
  22. this.g_SelectedItems = [];
  23. this.g_LoadedItems = [];
  24. this.g_ItemsUnitPrice_New = [];
  25. this.g_CartItems_New = [];
  26. this.g_AppliedTaxGroups = [];
  27. this.g_PageIndex = 0;
  28. this.g_PageSize = 5;
  29. this.g_CartPageIndex = 1;
  30. this.g_PriceTypeId = 1;
  31. this.g_IsEnablePieces = false;
  32. this.g_IsEnablePacks = false;
  33. this.g_IsEnablePiecePrice = false;
  34. this.g_IsEnableCompositePrice = false;
  35. this.g_IsEnableCompositePiecePrice = false;
  36. this.g_BodyWidth = $('body').width();
  37. this.g_IsExcise = false;
  38. this.g_PacksFocus = true;
  39. this.g_PiecesFocus = false;
  40. this.g_AddedCartItemIds = "";
  41. this.g_AppliedOffers = [];
  42. this.g_ModuleName = "";
  43. this.g_IsFilterApplied = false;
  44. this.g_TagArray = [];
  45. this.g_LoadOffersOnly = false;
  46. this.g_PriceCodeId = 0;
  47. this.g_OrderTypeId = 1;
  48. this.g_CountryId = 0;
  49. this.g_OrganizationId = 0;
  50. this.g_OrgContactId = 0;
  51. this.g_IsCalculateTax = false;
  52. this.g_InventoryApplyType = 1;
  53. this.g_OrderType = "Sales";
  54. this.g_LeveragePercent = 0;
  55. this.g_IsLeverageApplied = false;
  56. this.g_IsApprovalRequired = false;
  57. this.g_IsTaxInclusive = false;
  58. this.g_BranchId = 0;
  59. this.g_CompanyId = 0;
  60. this.g_IsSeriesDisabled = false;
  61. this.g_CompositePriceType = 1;
  62. this.g_TagGroupId = 0;
  63. this.g_IsDealer = false;
  64. this.g_LobId = 0;
  65. this.g_SalesPersonId = 0;
  66. this.g_SeriesId = 0;
  67. this.g_BillingAddressId = 0;
  68. this.g_ShippingAddressId = 0;
  69. this.g_ShipFromAddressId = 0;
  70. this.g_IsShowEnablePieceChkbox = 0;
  71. this.g_IsShowAvailability = 1;
  72. this.g_IsChangePaymentMode = 1;
  73. this.g_IsShowExchangeDc = 1;
  74. this.g_IsChangePaymentTerm = 1;
  75. this.g_ShowPrice = 1;
  76. this.g_IsAdmin = 1;
  77. this.g_TagsLink = [];
  78. this.g_IsCheckOutForm = true;
  79. }
  80. init(formpropertyid, prop, callback) {
  81. let instance = this;
  82. let jsFiles = ["apps/transact/controls/pricelist/managers/pricelistmanager.js", "apps/transact/managers/payments/paymentmanager.js", "apps/crm/contacts/managers/contactmanager.js", "apps/crm/lobs/managers/lobmanager.js", "apps/transact/managers/paymentterms/paymenttermmanager.js", "platform/apps/managers/stagemanager.js", "apps/transact/managers/orders/ordermanager.js", "apps/transact/enums/enum.js", "platform/permission/enums/permission.js", "apps/transact/managers/invoicemanager.js", "apps/transact/managers/offers/offermanager.js", "platform/core/helpers/numberhelper/numberhelper.js", "libs/jquery/pagination/jquery.pagination.js", "apps/transact/components/orders/orderfilter.js"];
  83. instance.fileCacheHelper.loadJsFiles(jsFiles, function () {
  84. instance.loadControlSettings(prop.ControlJsonText, prop.FormPropertyId);
  85. instance.loadPropertySettings(prop.PropertySettings, prop.FormPropertyId);
  86. });
  87. }
  88. loadControl(containerid, prop) {
  89. let instance = this;
  90. let html = '<div class="row">' +
  91. '<input type = "hidden" id = "hdn_customcontrol" class="value-control" value = "Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().getCartItems();"' +
  92. '<div class="col-sm-12">' +
  93. '</div>' +
  94. '</div>' +
  95. '<div class="col-sm-12 m-t-xs leverage-Warning hidden">' +
  96. '<div class="alert alert-success alert-block">' +
  97. ' <h4>Warning..!</h4>' +
  98. ' <p id="lblSpocNotes">Leverage percent exceeded, Some item have the discount of more than your approved leverage of <span class="empLeverage"></span> %.</p>' +
  99. '</div>' +
  100. '</div>' +
  101. '<div class="col-sm-12 m-t-xs cart-Warning hidden">' +
  102. '<div class="alert alert-success alert-block">' +
  103. ' <h4>Warning..!</h4>' +
  104. ' <p class="cartitem-warning"></p>' +
  105. '</div>' +
  106. '</div>' +
  107. ' <div class="order-cart-list" id="CartItemsList">' +
  108. '<div class="floating-label-form-group CartItemFindTxt hidden">' +
  109. '<label for="CartItemSearch" id="">Search Items </label>' +
  110. ' <input type="search" id="cartItemsSearch" class="form-control floating-label-control" data-isdynamic="false" placeholder="Search Items" data-placeholder="Item Name" data-label="Search Items" autocomplete="on" /> ' +
  111. '</div> ' +
  112. '<ul class="list-group no-radius clear mt-10 mb-10" id="ulOrder_Cart"></ul>' +
  113. '<ul class="list-group no-radius clear" id="ulOpportunityTag_Cart"></ul>' +
  114. '<div class="d-flex justify-content-between align-items-center">' +
  115. '<div id="ContinueShopping_Div"><a href="javascript:;" id="btn_ContinueShopping" class="btn btn-outline-primary ContinueShopping mr-auto btn-sm">Continue Shopping</a></div>' +
  116. '</div>' +
  117. '</div>';
  118. $("#" + containerid).html(html);
  119. let jsFiles = ["apps/transact/controls/pricelist/managers/pricelistmanager.js", "apps/transact/managers/payments/paymentmanager.js", "apps/crm/contacts/managers/contactmanager.js", "apps/crm/lobs/managers/lobmanager.js", "apps/transact/managers/paymentterms/paymenttermmanager.js", "platform/apps/managers/stagemanager.js", "apps/transact/managers/orders/ordermanager.js", "apps/transact/enums/enum.js", "platform/permission/enums/permission.js", "apps/transact/managers/invoicemanager.js", "apps/transact/managers/offers/offermanager.js", "platform/core/helpers/numberhelper/numberhelper.js", "libs/jquery/pagination/jquery.pagination.js", "apps/transact/components/orders/orderfilter.js"];
  120. instance.fileCacheHelper.loadJsFiles(jsFiles, function () {
  121. let checkoutPageHtml = "";
  122. checkoutPageHtml = `<div class="text-center"><span class="btn-sm btn btn-primary hidden" id="poscheckoutitemsloadmore">More</span></div>`;
  123. $("#poscheckoutitemsloadmore").remove();
  124. $("#ContinueShopping_Div").after(checkoutPageHtml);
  125. $('#poscheckoutitemsloadmore').click(function () {
  126. instance.g_PageIndex = instance.g_PageIndex + 1;
  127. instance.g_CartPageIndex = instance.g_CartPageIndex + 1;
  128. instance.getTotals();
  129. });
  130. let Qtyhtml = '<span class="text-dark font-weight-bold divOrderCartItems" style="font-size:15px"> (<span class="netpacks" id="totalOrderItems"></span>) </span> <div class="divOrderCartQty pull-right">' +
  131. ' <span class="font-bold pull-right"> Total Qty : <b id="OverallOrderQuantity"></b></span>' +
  132. ' </div>';
  133. $(".section_CartItems").find(".card-header").append(Qtyhtml).addClass('text-dark');
  134. $(".section_CartItems").find(".card-body").addClass('pt-0');
  135. $(".section_PriceSummary,.section_Address").find(".card-header").addClass('text-dark');
  136. $("#totalOrderItems_link").click(function () {
  137. $("#ulOrder_Cart").toggleClass("hidden");
  138. });
  139. $("#cartItemsSearch").on("keyup", function () {
  140. let value = $(this).val().toString().toLowerCase();
  141. $("#ulOrder_Cart li:not(:first-child)").filter(function () {
  142. $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
  143. });
  144. });
  145. instance.g_IsCheckOutForm = true;
  146. $("#div_FormName").text("My Cart");
  147. instance.resetAllVariables();
  148. let UserId = Unibase.Platform.Membership.Infos.Identity.getCurrentUser().userId;
  149. instance.g_IsDealer = Unibase.Platform.Membership.Infos.Identity.getCurrentUser().isRestrictedUser;
  150. if (instance.g_IsDealer) {
  151. instance.fileCacheHelper.loadJsFile("apps/crm/contacts/managers/contactmanager.js", function () {
  152. Bizgaze.Apps.Crm.Contacts.Managers.ContactManager.Instance().getContactByUserId(UserId).then(function (response) {
  153. let contactId = response.result.OrganizationId;
  154. instance.g_OrganizationId = response.result.OrganizationId;
  155. let organizationName = response.result.OrganizationName;
  156. let contact = new Option(organizationName, contactId.toString(), true);
  157. $(".txtAutoComplete_organizationid").append(contact);
  158. $(".txtAutoComplete_organizationid").val(contactId).trigger("change");
  159. instance.bindDetails(instance.g_OrganizationId, 0);
  160. $("#orgContact_back").addClass("hidden");
  161. });
  162. });
  163. }
  164. $("#btnDynamicSave").text("Place Order");
  165. $(".OrgContactNameLink, .section_Details").addClass('hidden');
  166. let VisibleContainerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1];
  167. $("#" + VisibleContainerId).find("#btn_CloseForm_" + $("#hf_FormId").val()).click(function () {
  168. instance.closePlaceAnOrder("CloseForm");
  169. });
  170. });
  171. }
  172. loadControlSettings(controlsettingjson, formpropertyid) {
  173. let instance = this;
  174. }
  175. loadPropertySettings(propertysettings, formpropertyid) {
  176. return null;
  177. }
  178. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  179. return null;
  180. }
  181. resetAllVariables() {
  182. let instance = this;
  183. $("#div_orgcontactid").removeClass("hidden");
  184. instance.g_LoadOffersOnly = false;
  185. instance.g_TagArray = [];
  186. instance.g_FilteredTags = '';
  187. instance.g_PageIndex = 0;
  188. instance.g_SelectedItems = [];
  189. instance.g_CartItems_New = [];
  190. instance.g_ItemsUnitPrice_New = [];
  191. instance.g_IsEnableCompositePrice = false;
  192. instance.g_IsEnablePiecePrice = false;
  193. instance.g_IsEnableCompositePiecePrice = false;
  194. instance.g_ValidFocItems = [];
  195. instance.g_CartPageIndex = 1;
  196. instance.g_PacksFocus = true;
  197. instance.g_PiecesFocus = false;
  198. instance.fileCacheHelper.loadJsFile("apps/transact/components/orders/orderfilter.js", function () {
  199. Bizgaze.Apps.Transact.Components.OrderFilter.Instance().g_TagArray = [];
  200. Bizgaze.Apps.Transact.Components.OrderFilter.Instance().g_OnlyFilters = false;
  201. });
  202. }
  203. bindDetails(OrganizationId, LobId) {
  204. let instance = this;
  205. instance.fileCacheHelper.loadJsFile("apps/transact/managers/orders/ordermanager.js", function () {
  206. Bizgaze.Apps.Transact.Managers.OrderManager.Instance().getDetails(OrganizationId, LobId, instance.g_OrderType, false).then(function (response) {
  207. let msg = response.message;
  208. let res = response.result;
  209. if (msg != "") {
  210. Unibase.Platform.Forms.Components.FormViewer.Instance().showError(msg);
  211. }
  212. if (res != null) {
  213. instance.g_LobId = res.LobId;
  214. instance.g_SalesPersonId = res.SalesPersonId;
  215. instance.g_SeriesId = res.SeriesId;
  216. instance.g_BillingAddressId = res.BillingAddressId;
  217. instance.g_ShippingAddressId = res.ShippingAddressId;
  218. instance.g_ShipFromAddressId = res.ShipFromAddressId;
  219. instance.g_WarehouseId = res.ShipFromAddressId;
  220. $(".txtAutoComplete_orgcontactid").empty();
  221. $(".txtAutoComplete_companyid").empty();
  222. $(".txtAutoComplete_shippingaddressid, .txtAutoComplete_billingaddressid").empty();
  223. $(".txtAutoComplete_shipfromaddressid, .txtAutoComplete_billfromaddressid").empty();
  224. $(".txtAutoComplete_lobid").empty();
  225. $(".txtAutoComplete_salespersonid").empty();
  226. $(".txtSeriesAutoComplete_seriesid").empty();
  227. $(".txtAutoComplete_paymenttermid").empty();
  228. }
  229. if (res.OrganizationTypeId == 1) {
  230. instance.g_OrgContactId = res.OrgContactId;
  231. if (res.OrgContactName != null && res.OrgContactName != undefined) {
  232. let OrgContactName = res.OrgContactName.substring(res.OrgContactName.toString().indexOf("-") + 2);
  233. let OrgContact = new Option(OrgContactName, instance.g_OrgContactId.toString(), true);
  234. $(".txtAutoComplete_orgcontactid").append(OrgContact).val(instance.g_OrgContactId);
  235. }
  236. }
  237. else if (res.OrganizationTypeId == 2) {
  238. $("#div_orgcontactid").addClass("hidden");
  239. }
  240. if (res.CountryId != "" && res.CountryId != undefined) {
  241. instance.g_CountryId = res.CountryId;
  242. }
  243. else {
  244. instance.g_CountryId = 0;
  245. }
  246. instance.g_CompanyId = res.CompanyId;
  247. let CompanyName = res.CompanyName;
  248. let ShipFromAddressId = response.result.ShipFromAddressId;
  249. instance.g_BranchId = response.result.BranchId;
  250. let BranchName = response.result.BranchName;
  251. let WarehouseName = response.result.ShipFromAddressName;
  252. let BranchShortCode = response.result.BranchShortCode;
  253. let WarehouseShortCode = response.result.WarehouseShortCode;
  254. let Company = new Option(CompanyName, instance.g_CompanyId.toString(), true);
  255. $(".txtAutoComplete_companyid").append(Company).val(instance.g_CompanyId);
  256. $(".txtAutoComplete_shipfromaddressid, .txtAutoComplete_billfromaddressid").val('').text('');
  257. let Branch = new Option(BranchName + " - " + BranchShortCode, instance.g_BranchId.toString(), true);
  258. let Warehouse = new Option(WarehouseName + " - " + WarehouseShortCode, ShipFromAddressId.toString(), true);
  259. if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Purchase || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseClaim) {
  260. $(".txtAutoComplete_shippingaddressid").append(Warehouse).val(ShipFromAddressId);
  261. $(".txtAutoComplete_billingaddressid").append(Branch).val(instance.g_BranchId);
  262. }
  263. else if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Sales || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.SalesClaim) {
  264. $(".txtAutoComplete_shipfromaddressid").append(Warehouse).val(ShipFromAddressId);
  265. $(".txtAutoComplete_billfromaddressid").append(Branch).val(instance.g_BranchId);
  266. }
  267. if (res.BillingAddressId != 0) {
  268. let BillingAddress = new Option(res.BillingAddressName, res.BillingAddressId, true);
  269. let ShippingAddress = new Option(res.BillingAddressName, res.BillingAddressId, true);
  270. if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Sales || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.SalesClaim) {
  271. $(".txtAutoComplete_billingaddressid").append(BillingAddress).val(res.BillingAddressId);
  272. $(".txtAutoComplete_shippingaddressid").append(ShippingAddress).val(res.ShippingAddressId);
  273. }
  274. if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Purchase || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseClaim) {
  275. $(".txtAutoComplete_billfromaddressid").append(BillingAddress).val(res.BillingAddressId);
  276. $(".txtAutoComplete_shipfromaddressid").append(ShippingAddress).val(res.ShippingAddressId);
  277. }
  278. }
  279. instance.bindShipToAddress(res.ShippingAddress);
  280. $(".txtAutoComplete_shippingaddressid").unbind().change(function () {
  281. let ShipToAddressId = Number($(".txtAutoComplete_shippingaddressid").val());
  282. let Addr = ",,,,,";
  283. if (ShipToAddressId != 0) {
  284. instance.fileCacheHelper.loadJsFile("apps/crm/contacts/managers/contactmanager.js", function () {
  285. Bizgaze.Apps.Crm.Contacts.Managers.ContactManager.Instance().getAddressById(ShipToAddressId).then(function (response) {
  286. let res = response.result;
  287. if (res != null) {
  288. Addr = res.AddressName + "," + res.Addressline1 + "," + res.Addressline2 + "," + res.CityName + "," + res.DistrictName + "," + res.StateName + "," + res.Landmark + "," + res.ZipCode;
  289. }
  290. instance.bindShipToAddress(Addr);
  291. });
  292. });
  293. }
  294. else {
  295. instance.bindShipToAddress(Addr);
  296. }
  297. });
  298. if (res.IsCashCustomer) {
  299. $(".dropdown_paymentmethodid").val(1);
  300. }
  301. $("#div_lobid, .txtAutoComplete_lobid, #div_salespersonid, .txtAutoComplete_salespersonid").removeClass("hidden").removeAttr("disabled");
  302. if (res.LobId != 0) {
  303. if (!res.IsMultipleLobs) {
  304. instance.g_TagGroupId = res.TagGroupId;
  305. let LobDetails = new Option(res.LobName, res.LobId, true);
  306. $(".txtAutoComplete_lobid").append(LobDetails).val(res.LobId);
  307. let data = res.Permissions;
  308. instance.setPermissionVariables(data);
  309. instance.itemSettingsEvents();
  310. instance.g_IsEnablePacks = true;
  311. instance.g_IsEnablePieces = true;
  312. instance.g_PacksFocus = true;
  313. instance.g_PiecesFocus = false;
  314. instance.g_InventoryApplyType = Bizgaze.Apps.Transact.Enums.InventoryApplyType.PacksAndPieces;
  315. instance.g_CompositePriceType = Number(Bizgaze.Apps.Transact.Enums.PriceType.None);
  316. instance.g_IsCalculateTax = res.CalculateTax;
  317. let SalesPerson = new Option(res.SalesPersonName, res.SalesPersonId, true);
  318. $(".txtAutoComplete_salespersonid").append(SalesPerson);
  319. $(".txtAutoComplete_salespersonid").val(res.SalesPersonId);
  320. $(".txtSeriesAutoComplete_seriesid").empty();
  321. if (instance.g_IsSeriesDisabled) {
  322. $(".txtSeriesAutoComplete_seriesid").attr("disabled", "true");
  323. }
  324. else {
  325. $(".txtSeriesAutoComplete_seriesid").removeAttr("disabled");
  326. }
  327. if (res.SeriesSettings.length == 0) {
  328. for (let s = 0; s < res.SeriesList.length; s++) {
  329. let Series = new Option(res.SeriesList[s].SeriesName, res.SeriesList[s].SeriesId, true);
  330. $(".txtSeriesAutoComplete_seriesid").append(Series);
  331. }
  332. }
  333. else {
  334. for (let s = 0; s < res.SeriesSettings.length; s++) {
  335. let Series = new Option(res.SeriesSettings[s].SeriesName, res.SeriesSettings[s].SeriesId, true);
  336. $(".txtSeriesAutoComplete_seriesid").append(Series);
  337. }
  338. }
  339. $(".txtSeriesAutoComplete_seriesid").val(res.SeriesId);
  340. }
  341. if (res.PaymentTermId != 0) {
  342. let PaymentTerm = new Option(res.PaymentTermName, res.PaymentTermId, true);
  343. $(".txtAutoComplete_paymenttermid").append(PaymentTerm);
  344. $(".txtAutoComplete_paymenttermid").val(res.PaymentTermId);
  345. }
  346. if (res.Terms != "<p><br></p>" && res.Terms != "" && res.Terms != null) {
  347. $(".divCustomProperties_terms").addClass('floating-label-form-group-with-value');
  348. let id = $(".divCustomProperties_terms").attr("id");
  349. if (id != undefined && id != "" && id != null) {
  350. id = $(".divCustomProperties_terms").attr("id").replace("control-container-", "");
  351. $("#txt_" + id).html(res.Terms);
  352. $("#txt_" + id).val($("#txt_" + id)[0].textContent);
  353. }
  354. }
  355. else
  356. $(".divCustomProperties_terms").removeClass('floating-label-form-group-with-value');
  357. instance.g_PriceCodeId = res.PriceCodeId;
  358. $('#hfOrder_IsSeperateExcise').val(res.IsSeperateExcise);
  359. if ($("#chk_PriceCodeId").is(':checked'))
  360. instance.g_PriceCodeId = res.AdvancePriceCodeId;
  361. if (Number($(".hdn_orderid").val()) == 0) {
  362. instance.bindCartItems();
  363. }
  364. if (LobId == 0) {
  365. $("#div_lobid").addClass("hidden");
  366. $("#div_salespersonid").addClass("hidden");
  367. }
  368. }
  369. else {
  370. let msg = response.message;
  371. if (msg != "") {
  372. $(".txtAutoComplete_lobid").empty();
  373. $(".txtAutoComplete_lobid, .txtAutoComplete_salespersonid").attr("disabled", "disabled");
  374. }
  375. }
  376. instance.loadAutoCompletes();
  377. instance.g_IsLeverageApplied = res.IsLeverageApplied;
  378. if (!instance.g_IsAdmin) {
  379. if (res.LeveragePercent != 0 && res.LeveragePercent != '' && res.LeveragePercent != undefined)
  380. instance.g_LeveragePercent = res.LeveragePercent;
  381. $('.empLeverage').text(instance.g_LeveragePercent);
  382. }
  383. });
  384. });
  385. }
  386. loadAutoCompletes() {
  387. let instance = this;
  388. let id = $(".select2-results").find("ul").attr("id");
  389. let changedAutoComplete = "";
  390. if (id != undefined && id != null) {
  391. changedAutoComplete = $("#" + id.replace("select2-", "").replace("-results", "")).attr("data-propertyname");
  392. }
  393. let OrgId = [
  394. { ColumnName: 'orgid', Value: instance.g_OrganizationId },
  395. ];
  396. Unibase.Forms.Controls.AutoComplete.Instance().LoadAutoComplete($(".txtAutoComplete_orgcontactid"), OrgId);
  397. let Contact = [
  398. { ColumnName: 'contactid', Value: instance.g_OrganizationId },
  399. ];
  400. if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Sales || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.SalesClaim) {
  401. if (changedAutoComplete != "billingaddressid") {
  402. Unibase.Forms.Controls.AutoComplete.Instance().LoadAutoComplete($(".txtAutoComplete_billingaddressid"), Contact);
  403. }
  404. if (changedAutoComplete != "shippingaddressid") {
  405. Unibase.Forms.Controls.AutoComplete.Instance().LoadAutoComplete($(".txtAutoComplete_shippingaddressid"), Contact);
  406. }
  407. }
  408. else if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Purchase || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseClaim) {
  409. if (changedAutoComplete != "branchid") {
  410. Unibase.Forms.Controls.AutoComplete.Instance().LoadAutoComplete($(".txtAutoComplete_billfromaddressid"), Contact);
  411. }
  412. if (changedAutoComplete != "shipfromaddressid") {
  413. Unibase.Forms.Controls.AutoComplete.Instance().LoadAutoComplete($(".txtAutoComplete_shipfromaddressid"), Contact);
  414. }
  415. }
  416. if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Sales || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.SalesClaim) {
  417. let Parameters = [{ ColumnName: "companyid", Value: Number($(".txtAutoComplete_companyid").val()) }];
  418. if (changedAutoComplete != "branchid") {
  419. Unibase.Forms.Controls.AutoComplete.Instance().LoadAutoComplete($(".txtAutoComplete_billfromaddressid"), Parameters);
  420. }
  421. if (changedAutoComplete != "shipfromaddressid") {
  422. Unibase.Forms.Controls.AutoComplete.Instance().LoadAutoComplete($(".txtAutoComplete_shipfromaddressid"), Parameters);
  423. }
  424. }
  425. else if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Purchase || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseClaim) {
  426. let Parameters = [{ ColumnName: "companyid", Value: Number($(".txtAutoComplete_companyid").val()) }];
  427. if (changedAutoComplete != "billingaddressid") {
  428. Unibase.Forms.Controls.AutoComplete.Instance().LoadAutoComplete($(".txtAutoComplete_billingaddressid"), Parameters);
  429. }
  430. if (changedAutoComplete != "shippingaddressid") {
  431. Unibase.Forms.Controls.AutoComplete.Instance().LoadAutoComplete($(".txtAutoComplete_shippingaddressid"), Parameters);
  432. }
  433. }
  434. if (changedAutoComplete != "lobid") {
  435. let portalId = 0;
  436. if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Purchase || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseClaim)
  437. portalId = Number($(".txtAutoComplete_billfromaddressid").val());
  438. else
  439. portalId = Number($(".txtAutoComplete_billingaddressid option:selected").val());
  440. let Parameters = [
  441. { ColumnName: 'contactaddressid', Value: portalId },
  442. ];
  443. Unibase.Forms.Controls.AutoComplete.Instance().LoadAutoComplete($(".txtAutoComplete_lobid"), Parameters);
  444. }
  445. if (changedAutoComplete != "salespersonid") {
  446. let LobId = 0;
  447. let OrganizationAddressId = 0;
  448. if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Sales || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.SalesClaim) {
  449. LobId = Number($(".txtAutoComplete_lobid option:selected").val());
  450. OrganizationAddressId = Number($(".txtAutoComplete_billingaddressid option:selected").val());
  451. }
  452. else if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Purchase || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseClaim) {
  453. LobId = Number($(".txtAutoComplete_lobid option:selected").val());
  454. OrganizationAddressId = Number($(".txtAutoComplete_billfromaddressid option:selected").val());
  455. }
  456. let Parameters = [
  457. { ColumnName: 'lobid', Value: LobId },
  458. { ColumnName: 'contactaddressid', Value: OrganizationAddressId },
  459. ];
  460. Unibase.Forms.Controls.AutoComplete.Instance().LoadAutoComplete($(".txtAutoComplete_salespersonid"), Parameters);
  461. }
  462. }
  463. setPermissionVariables(res) {
  464. let instance = this;
  465. let data = res;
  466. let AllowPermission = Unibase.Platform.Permissions.Enums.PermissionLevel[Unibase.Platform.Permissions.Enums.PermissionLevel.Allow];
  467. if (data.ShowItemAvailability == AllowPermission) {
  468. instance.g_IsShowAvailability = 1;
  469. }
  470. else {
  471. instance.g_IsShowAvailability = 0;
  472. }
  473. if (data.EnableItemPieces == AllowPermission) {
  474. instance.g_IsShowEnablePieceChkbox = 1;
  475. }
  476. else {
  477. instance.g_IsShowEnablePieceChkbox = 0;
  478. }
  479. if (data.ChangePaymentTerm == AllowPermission) {
  480. instance.g_IsChangePaymentTerm = 1;
  481. }
  482. else {
  483. instance.g_IsChangePaymentTerm = 0;
  484. }
  485. if (data.ChangePaymentMode == AllowPermission) {
  486. instance.g_IsChangePaymentMode = 1;
  487. }
  488. else {
  489. instance.g_IsChangePaymentMode = 0;
  490. }
  491. if (data.EditPrice == AllowPermission) {
  492. instance.g_ShowPrice = 1;
  493. }
  494. else {
  495. instance.g_ShowPrice = 0;
  496. }
  497. if (data.ShowExchangeDC == AllowPermission) {
  498. instance.g_IsShowExchangeDc = 1;
  499. }
  500. else {
  501. instance.g_IsShowExchangeDc = 0;
  502. }
  503. }
  504. checkIsCheckOutForm() {
  505. let instance = this;
  506. if (!$("#ulOrder_Cart").is(":visible")) {
  507. instance.g_IsCheckOutForm = false;
  508. }
  509. else {
  510. instance.g_IsCheckOutForm = true;
  511. }
  512. }
  513. bindShipToAddress(res) {
  514. let Addr = res.split(",");
  515. let Address = Addr[0] == "" || Addr[0] == undefined ? "NA" : Addr[0];
  516. let AddressLine1 = Addr[1] == "" || Addr[1] == undefined ? "NA" : Addr[1];
  517. let AddressLine2 = Addr[2] == "" || Addr[2] == undefined ? "NA" : Addr[2];
  518. let City = Addr[3] == "" || Addr[3] == undefined ? "NA" : Addr[3];
  519. let District = Addr[4] == "" || Addr[4] == undefined ? "NA" : Addr[4];
  520. let State = Addr[5] == "" || Addr[5] == undefined ? "NA" : Addr[5];
  521. let LandMark = Addr[6] == "" || Addr[6] == undefined ? "NA" : Addr[6];
  522. let PinCode = Addr[7] == "" || Addr[7] == undefined ? "NA" : Addr[7];
  523. let html = `<div class="card mb-0 p-2 ShipToAddress">
  524. <div><h6 class="text-dark mb-2">${Address}</h6></div>
  525. <div>`;
  526. html += `<p class="text-dark">${AddressLine1 == "NA" ? "" : AddressLine1}${AddressLine2 == "NA" ? "" : ', ' + AddressLine2}${LandMark == "NA" ? "" : ', ' + LandMark}${City == "NA" ? "" : ', ' + City}${District == "NA" ? "" : ', ' + District}${State == "NA" ? "" : ', ' + State}${PinCode == "NA" ? "" : ' - ' + PinCode}</p></div>`;
  527. html += `</div>`;
  528. $(".ShipToAddress").remove();
  529. $(".section_Address .card-body").append(html);
  530. }
  531. loadItems(SearchItem, showUnitPriceWarning = false) {
  532. let instance = this;
  533. let OrganizationId = instance.g_OrganizationId;
  534. let LoBId = instance.g_LobId;
  535. let ShipTo = instance.g_ShippingAddressId;
  536. let BranchId = instance.g_BranchId;
  537. if (SearchItem == "Offers" || SearchItem == "All Items" || SearchItem == "Filter" || SearchItem == "Eligible Items") { }
  538. else
  539. SearchItem = (encodeURIComponent(encodeURIComponent(SearchItem).replace('*', '%2A').replace('.', '%2E'))).replace(/\%/g, '!');
  540. if (SearchItem == undefined || SearchItem == '') {
  541. SearchItem = ' ';
  542. }
  543. if (SearchItem == "Offers") {
  544. instance.g_LoadOffersOnly = true;
  545. SearchItem = '';
  546. if (instance.g_IsFilterApplied) {
  547. instance.g_IsFilterApplied = false;
  548. instance.g_FilteredTags = '';
  549. instance.g_TagArray = [];
  550. }
  551. }
  552. else if (SearchItem == "All Items") {
  553. instance.g_LoadOffersOnly = false;
  554. instance.g_FilteredTags = '';
  555. instance.g_TagArray = [];
  556. SearchItem = "";
  557. }
  558. else if (SearchItem == "Filter") {
  559. instance.g_LoadOffersOnly = false;
  560. }
  561. let PriceCodeId = instance.g_PriceCodeId;
  562. let ContactId = OrganizationId;
  563. if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Sales) {
  564. instance.g_WarehouseId = instance.g_ShipFromAddressId;
  565. }
  566. let varianturl;
  567. if (SearchItem.replace(" ", "") == "") {
  568. SearchItem = null;
  569. }
  570. let Tags = "";
  571. let AddedCartItemIds = "";
  572. let ProductId = 0;
  573. instance.checkIsCheckOutForm();
  574. if (!instance.g_IsCheckOutForm) {
  575. Tags = Bizgaze.Apps.Transact.Components.OrderFilter.Instance().g_Tags;
  576. ProductId = instance.g_ProductId;
  577. }
  578. else {
  579. AddedCartItemIds = instance.g_AddedCartItemIds;
  580. }
  581. if (Number(LoBId) == 0) {
  582. $(".InventorySettings").empty();
  583. $("#ulOrder_Cart").html('<li id="0" class="cartitem list-group-item col-xs-12 hidden clear no-border"></li> <li class="list-group-item col-xs-12 no-border EmptyCartLi"><strong>Your Shopping Cart is empty.</strong></li>');
  584. }
  585. else {
  586. instance.fileCacheHelper.loadJsFile("apps/transact/managers/inventory/itemmanager.js", function () {
  587. let postdata = {
  588. PriceCodeId: Number(PriceCodeId),
  589. ContactId: ContactId,
  590. ShippingAddressId: Number(ShipTo),
  591. BranchId: Number(BranchId),
  592. WareHouseId: Number(instance.g_WarehouseId),
  593. LobId: Number(LoBId),
  594. OrderType: instance.g_OrderTypeId,
  595. OfferOnly: instance.g_LoadOffersOnly,
  596. IsExcise: instance.g_IsExcise,
  597. SearchTerm: SearchItem,
  598. Page: instance.g_PageIndex,
  599. IsCompositePrice: instance.g_IsEnableCompositePrice,
  600. IsPiecePrice: instance.g_IsEnablePiecePrice,
  601. IsCompositePiecePrice: instance.g_IsEnableCompositePiecePrice,
  602. Rows: instance.g_PageSize,
  603. ItemId: "0",
  604. CountryId: instance.g_CountryId,
  605. ItemGroupId: 0,
  606. Tags: Tags,
  607. IsPoints: false,
  608. Points: 0,
  609. IsEligibleItemsOnly: false,
  610. ProductId: ProductId,
  611. AddedCartItemIds: AddedCartItemIds
  612. };
  613. let cntId = instance.g_OrganizationId;
  614. if (cntId == 0)
  615. cntId = instance.g_OrgContactId;
  616. if ($("#ItemLoadType option:selected").text() != "Filter" || (Bizgaze.Apps.Transact.Components.OrderFilter.Instance().g_Tags.length == 0 && $("#ItemLoadType option:selected").text() == "Filter")) {
  617. if (Bizgaze.Apps.Transact.Components.OrderFilter.Instance().g_Tags.length == 0 && $("#ItemLoadType option:selected").text() == "Filter") {
  618. instance.g_LoadOffersOnly = false;
  619. }
  620. }
  621. varianturl = Bizgaze.Apps.Transact.Managers.ItemManager.Instance().getVariantsForOrder(postdata);
  622. instance.navigationHelper.showLoading();
  623. varianturl.then(function (response) {
  624. instance.navigationHelper.hideLoading();
  625. if (response.result.length > 0) {
  626. instance.itemPagination(response, OrganizationId, LoBId, ShipTo, BranchId);
  627. $("#btn_CheckOutOrder").removeClass("hidden");
  628. if (instance.g_CartItems_New.length == 0) {
  629. $("#ulOrder_Cart").html('<li id="0" class="cartitem list-group-item col-xs-12 hidden clear no-border"></li> <li class="list-group-item col-xs-12 no-border EmptyCartLi"><strong>Your Shopping Cart is empty.</strong></li>');
  630. }
  631. instance.navigationHelper.hideLoading();
  632. }
  633. else {
  634. $(".div_titledetails").addClass("hidden");
  635. if (instance.g_LoadOffersOnly) {
  636. $("#div_ItemList").html('<ul class="variant-list list-group" id="Items-list"><li class="variant-item"><div class="text-center">Offer Items not found.</div></li></ul>');
  637. }
  638. else {
  639. $("#div_ItemList").html('<ul class="variant-list list-group" id="Items-list"><li class="variant-item"><div class="text-center">Items not found.</div></li></ul>');
  640. }
  641. }
  642. let IsPriceWarning = false;
  643. for (let i = 0; i < instance.g_CartItems_New.length; i++) {
  644. let Itm = instance.g_CartItems_New[i];
  645. let elem = $(".variant-addeditem-" + Itm.ItemId);
  646. if (!instance.g_IsCheckOutForm) {
  647. if (elem != undefined && elem.length > 0) {
  648. let row = instance.g_LoadedItems.find(x => x.ItemId == Itm.ItemId);
  649. if (row != undefined && row != null) {
  650. $(elem).find("#txt_editItemPrice").val(row.UnitPrice);
  651. }
  652. instance.updateItemsArray(elem, "BindCartItems", false, 0, false);
  653. }
  654. }
  655. let cart_elem = $(".cartitem-" + Itm.ItemId);
  656. if (instance.g_IsCheckOutForm) {
  657. if (cart_elem.length == 0) {
  658. if (instance.g_IsCheckOutForm) {
  659. instance.addCartItem(Itm.ItemId);
  660. }
  661. }
  662. cart_elem = $(".cartitem-" + Itm.ItemId);
  663. if (cart_elem != undefined && cart_elem.length > 0) {
  664. let row = instance.g_LoadedItems.find(x => x.ItemId == Itm.ItemId);
  665. if (row != undefined && row != null) {
  666. $(cart_elem).find("#txt_editItemPrice").val(row.UnitPrice);
  667. }
  668. instance.updateItemsArray(cart_elem, "BindCartItems", false);
  669. }
  670. }
  671. if (showUnitPriceWarning) {
  672. let Item = instance.g_CartItems_New.find(x => x.ItemId == Itm.ItemId);
  673. let price = Item.UnitPrice;
  674. let actualprice = Item.ActualPrice;
  675. let oldunitprice = Item.OldUnitPrice;
  676. if (price < oldunitprice) {
  677. Item.ErrorMsg += "\n Unit price is reduced from " + oldunitprice + " to " + price;
  678. cart_elem.find(".tax-error").text("Unit price is reduced from " + oldunitprice + " to " + price).removeClass("text-danger").addClass("text-warning");
  679. elem.find(".tax-error").text("Unit price is reduced from " + oldunitprice + " to " + price).removeClass("text-danger").addClass("text-warning");
  680. IsPriceWarning = true;
  681. }
  682. if (price > oldunitprice) {
  683. Item.ErrorMsg += "\n Unit price is increased from " + oldunitprice + " to " + price;
  684. cart_elem.find(".tax-error").text("Unit price is increased from " + oldunitprice + " to " + price).removeClass("text-danger").addClass("text-warning");
  685. elem.find(".tax-error").text("Unit price is increased from " + oldunitprice + " to " + price).removeClass("text-danger").addClass("text-warning");
  686. IsPriceWarning = true;
  687. }
  688. }
  689. }
  690. instance.checkIsCheckOutForm();
  691. if (instance.g_IsCheckOutForm) {
  692. instance.checkOffers(false, 0, "BindPOSCartItems");
  693. }
  694. if (IsPriceWarning == true) {
  695. $(".cart-Warning").removeClass("hidden");
  696. $(".cartitem-warning").text("Some of the items unit price has been changed after adding to cart");
  697. }
  698. else {
  699. $(".cart-Warning").addClass("hidden");
  700. }
  701. instance.getTotals(0, "LoadItems");
  702. });
  703. });
  704. }
  705. }
  706. itemPagination(response, OrganizationId, LoBId, ShipTo, BranchId) {
  707. let instance = this;
  708. response.result.forEach(x => {
  709. let LoadedItem_Index = instance.g_LoadedItems.findIndex(z => z.ItemId == x.ItemId);
  710. if (LoadedItem_Index == -1 && x != undefined) {
  711. instance.g_LoadedItems.push(x);
  712. }
  713. else {
  714. instance.g_LoadedItems[LoadedItem_Index].TaxPercentList = x.TaxPercentList;
  715. }
  716. });
  717. let Items = response.result;
  718. if (instance.g_ProductId != 0) {
  719. Items = response.result.filter(x => x.ProductId == instance.g_ProductId);
  720. }
  721. if (!instance.g_IsCheckOutForm) {
  722. instance.bindItemList(Items);
  723. if (response.result.length > 0) {
  724. if (response.result[0].TotalRecords > (instance.g_PageIndex + 1) * instance.g_PageSize) {
  725. $('#poscartitemsloadmore').removeClass('hidden');
  726. }
  727. else {
  728. $('#poscartitemsloadmore').addClass('hidden');
  729. }
  730. }
  731. else {
  732. $('#poscartitemsloadmore').addClass('hidden');
  733. }
  734. }
  735. }
  736. bindItemList(items) {
  737. let instance = this;
  738. if (items.length == 0) {
  739. if (instance.g_LoadOffersOnly) {
  740. $(".variant-list").html('<li><div class="text-center">Offer Items not found.</div></li></ul>');
  741. }
  742. else {
  743. $(".variant-list").html('<li><div class="text-center">Items not found.</div></li></ul>');
  744. }
  745. $(".div_titledetails").addClass("hidden");
  746. return false;
  747. }
  748. else
  749. $(".div_titledetails").removeClass("hidden");
  750. let lbl_Carton = "ml-95";
  751. let lbl_Pieces = "pl-75";
  752. if (instance.g_BodyWidth > 320 && instance.g_BodyWidth < 400) {
  753. lbl_Carton = "ml-45";
  754. lbl_Pieces = "pl-10";
  755. }
  756. if (instance.g_BodyWidth > 400 && instance.g_BodyWidth < 470) {
  757. lbl_Carton = "ml-55";
  758. lbl_Pieces = "pl-25";
  759. }
  760. if (instance.g_BodyWidth > 1300 && instance.g_BodyWidth <= 1600) {
  761. lbl_Carton = "ml-65";
  762. lbl_Pieces = "pl-55";
  763. }
  764. for (let i = 0; i < items.length; i++) {
  765. let data;
  766. data = items[i];
  767. let ItemId = data.ItemId;
  768. let html = "";
  769. html = instance.getItemDesign(data);
  770. $(".variant-item:last").after(html);
  771. if (!$(".variant-addeditem-" + ItemId).find('.item-img-link').data('src')) {
  772. instance.setItemAvatarText(ItemId, data.ItemName, false);
  773. }
  774. let element = $(".variant-item:last");
  775. instance.allItemEvents(element);
  776. let SelItem = instance.g_SelectedItems.find(x => x.ItemId == ItemId);
  777. if (SelItem != null && !instance.g_IsCheckOutForm) {
  778. let element = $(".variant-item:last");
  779. instance.updateItemsDesign(element, "BindItemList");
  780. if (SelItem.Packs == 0) {
  781. $(element).find(".txtOrder_ItemCount").val("");
  782. }
  783. if (SelItem.Pieces == 0) {
  784. $(element).find(".txtOrder_ItemPieceCount").val("");
  785. }
  786. }
  787. else {
  788. $(element).find(".txtOrder_ItemCount").val("");
  789. $(element).find(".txtOrder_ItemPieceCount").val("");
  790. }
  791. }
  792. let pageHtml = "";
  793. pageHtml = `<div class="text-center"><span class="btn btn-primary btn-sm hidden" id="poscartitemsloadmore">More</span></div>`;
  794. $("#poscartitemsloadmore").remove();
  795. $(".variant-item:last").parent('ul').after(pageHtml);
  796. $('#poscartitemsloadmore').click(function () {
  797. instance.g_PageIndex = instance.g_PageIndex + 1;
  798. instance.loadItems($("#txt_SearchItem").val());
  799. });
  800. }
  801. updateItemsArray(elem, event, FromWidget = false, Qty = 0, refreshTotals = true) {
  802. let instance = this;
  803. let OrderItemId = 0;
  804. let SelectedUnitId = 1;
  805. let DefaultSize = 0;
  806. let DiscountPercent = 0, DiscountValue = 0, DiscountAmount = 0, AfterDiscountValue = 0, BaseQty = 0, TaxGroupId = 0, TaxGroupName = "", TaxAmount = 0, StrTaxPercents = "", TaxRateAmount = 0, Amount = 0, IsCheckPendingItems = false, IsLeverageError = false, IsTaxError = false, IsWishList = false, OldUnitPrice = 0;
  807. if ($(elem).find(".fa-heart").length > 0) {
  808. IsWishList = true;
  809. }
  810. let IsCalculateTax = instance.g_IsCalculateTax;
  811. let ItemIndex = instance.g_CartItems_New.length + 1;
  812. let optoutAmount = 0;
  813. let ItemId = Number($(elem).find(".hfOrder_ItemId").val());
  814. let Packs = isNaN(Number($(elem).find(".txtOrder_ItemCount").val())) ? 0 : Number($(elem).find(".txtOrder_ItemCount").val());
  815. let Pieces = isNaN(Number($(elem).find(".txtOrder_ItemPieceCount").val())) ? 0 : Number($(elem).find(".txtOrder_ItemPieceCount").val());
  816. instance.checkIsCheckOutForm();
  817. let UnitPrice = Number($(elem).find("#txt_editItemPrice").val());
  818. let UnitPriceWithOutTax = UnitPrice;
  819. let DiscountType = Number($(elem).find(".btnOrder_DiscType").val());
  820. let IsExchangeDC = $(elem).find(".chkItem_ExchangeDC").prop("checked");
  821. if (IsExchangeDC == undefined) {
  822. IsExchangeDC = false;
  823. }
  824. let IsAfterTax = $(elem).find(".divAfterTax").is(':checked');
  825. if (DiscountType == 1) {
  826. DiscountPercent = Number($(elem).find("#Ord_txtdiscount").val());
  827. DiscountAmount = Number($(elem).find("#txt_editItemPrice").val()) * Number(DiscountPercent / 100);
  828. AfterDiscountValue = Number($(elem).find("#txt_editItemPrice").val()) - Number(DiscountAmount);
  829. }
  830. else if (DiscountType == 2) {
  831. DiscountValue = Number($(elem).find("#Ord_txtdiscount").val());
  832. DiscountAmount = DiscountValue;
  833. AfterDiscountValue = Number($(elem).find("#txt_editItemPrice").val()) - DiscountValue;
  834. }
  835. let LoadedItems_Index = instance.g_LoadedItems.findIndex(x => x.ItemId == ItemId);
  836. let SelectedItems_Index = -1;
  837. if (instance.g_SelectedItems != undefined) {
  838. SelectedItems_Index = instance.g_SelectedItems.findIndex(x => x.ItemId == ItemId && x.RefItemIds == "");
  839. }
  840. let CartItems_Index = -1;
  841. if (instance.g_CartItems_New != undefined) {
  842. CartItems_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == "");
  843. }
  844. if (CartItems_Index != -1 && (event == "BindCartItems" || event == "LoadItems")) {
  845. Packs = instance.g_CartItems_New[CartItems_Index].Packs;
  846. Pieces = instance.g_CartItems_New[CartItems_Index].Pieces;
  847. }
  848. let row = instance.g_LoadedItems[LoadedItems_Index];
  849. let PartNo = row.PartNo;
  850. if (PartNo == undefined || PartNo == "null" || PartNo == null) {
  851. PartNo = "";
  852. }
  853. let Items_up = instance.g_ItemsUnitPrice_New.find(x => x.ItemId == ItemId);
  854. if (Items_up == undefined) {
  855. instance.g_ItemsUnitPrice_New.push({
  856. ItemId: ItemId,
  857. UnitPrice: UnitPrice,
  858. TaxRateAmount: TaxRateAmount
  859. });
  860. Items_up = instance.g_ItemsUnitPrice_New.find(x => x.ItemId == ItemId);
  861. }
  862. else {
  863. Items_up.UnitPrice = UnitPrice;
  864. }
  865. let Quantity = 0;
  866. let UOMQuantity = 0;
  867. if (instance.g_InventoryApplyType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity) {
  868. BaseQty = Number(Packs);
  869. Quantity = Packs;
  870. }
  871. else {
  872. if (Qty != 0) {
  873. BaseQty = Qty;
  874. Quantity = Qty;
  875. }
  876. else {
  877. BaseQty = Number(Number(row.PackCount) * Number(row.PackSize) * Number(Packs) + (Pieces * row.PackSize));
  878. Quantity = (((row.PackCount * row.PackSize) * Packs) + (Pieces * row.PackSize));
  879. }
  880. }
  881. if (row.IsMultipleUOMs) {
  882. SelectedUnitId = Number($(elem).find("#ddl_MultipleUOMs_" + ItemId).val());
  883. if (SelectedUnitId != 1 && SelectedUnitId != 0 && !isNaN(SelectedUnitId)) {
  884. let MultipleUOM = row.MultipleUOMs.find(x => x.SchemaDetailId == SelectedUnitId);
  885. UOMQuantity = Quantity * MultipleUOM.DefaultSize;
  886. BaseQty = UOMQuantity;
  887. DefaultSize = MultipleUOM.DefaultSize;
  888. }
  889. }
  890. Quantity = instance.roundOffIgnoreZerosAfterDecimal(Quantity);
  891. UOMQuantity = instance.roundOffIgnoreZerosAfterDecimal(UOMQuantity);
  892. if (SelectedItems_Index != -1) {
  893. if (event == "Plus" || event == "Packs" || event == "Pieces" || event == "ApplyOffer") {
  894. IsCheckPendingItems = instance.g_SelectedItems[SelectedItems_Index].IsCheckPendingItems;
  895. }
  896. OldUnitPrice = instance.g_SelectedItems[SelectedItems_Index].OldUnitPrice;
  897. ItemIndex = instance.g_SelectedItems[SelectedItems_Index].ItemIndex;
  898. OrderItemId = instance.g_SelectedItems[SelectedItems_Index].OrderItemId;
  899. $(elem).find(".tax-error").text("");
  900. $(elem).find("#LeverageErrorTxt").addClass("hidden");
  901. }
  902. if (instance.g_IsEnableCompositePiecePrice) {
  903. Amount = (UnitPriceWithOutTax * Number(BaseQty)) + Number(row.TaxRate);
  904. if (Number(BaseQty) == 0)
  905. Amount = 0;
  906. UnitPrice = instance.roundOffIgnoreZerosAfterDecimal(row.CompositePiecePrice);
  907. }
  908. else if (instance.g_IsEnableCompositePrice) {
  909. let amnt = Number(UnitPriceWithOutTax) * Number(row.TaxPercentage) / 100;
  910. TaxRateAmount = Number(UnitPriceWithOutTax) + Number(amnt);
  911. Amount = Number(BaseQty) * TaxRateAmount;
  912. UnitPrice = instance.roundOffIgnoreZerosAfterDecimal(row.CompositePrice);
  913. }
  914. else if (instance.g_IsEnablePiecePrice) {
  915. Amount = Number(BaseQty) * UnitPriceWithOutTax;
  916. UnitPrice = instance.roundOffIgnoreZerosAfterDecimal(row.PiecePrice);
  917. }
  918. else {
  919. Amount = Number(BaseQty) * UnitPriceWithOutTax;
  920. }
  921. Items_up.TaxRateAmount = TaxRateAmount;
  922. let AssessableAmount = Number(Amount);
  923. let discVal = Number(DiscountValue) * Number(BaseQty);
  924. let discPercent = Number(DiscountPercent);
  925. let DiscAmount = Number((Amount * discPercent) / 100) + Number(discVal);
  926. let discAmt = DiscAmount + Number(optoutAmount);
  927. AssessableAmount = Number(AssessableAmount) - Number(discAmt);
  928. let AmountWithDiscount = instance.roundOffIgnoreZerosAfterDecimal(Number(Amount) - Number(discAmt));
  929. if (IsCalculateTax) {
  930. if (row.TaxGroupId == 0) {
  931. IsTaxError = true;
  932. }
  933. else {
  934. TaxGroupId = row.TaxGroupId;
  935. TaxGroupName = row.TaxGroupName;
  936. for (let p = 0; p < row.TaxPercentList.length; p++) {
  937. let percen = row.TaxPercentList[p];
  938. let tax = AssessableAmount * percen.Percentage / 100;
  939. TaxAmount += tax;
  940. }
  941. StrTaxPercents = row.strTaxPercents;
  942. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.None;
  943. }
  944. }
  945. else {
  946. $("#TotalTax").addClass("hidden");
  947. $(".divCustomProperties_istaxinclusive").addClass("hidden");
  948. }
  949. let ItemData = {
  950. OrderItemId: OrderItemId,
  951. ItemIndex: ItemIndex,
  952. ItemId: ItemId,
  953. ItemName: row.ItemName,
  954. Packs: Packs,
  955. Pieces: Pieces,
  956. PriceListId: row.PriceListId,
  957. UnitPrice: UnitPrice,
  958. UnitPriceWithOutTax: UnitPriceWithOutTax,
  959. ExpectedPrice: row.UnitPrice,
  960. ActualPrice: row.UnitPrice,
  961. PackCount: row.PackCount,
  962. PackSize: row.PackSize,
  963. UnitName: row.UnitName,
  964. Quantity: Quantity,
  965. SKU: row.SKU,
  966. PartNo: PartNo,
  967. Amount: Amount,
  968. AmountWithDiscount: AmountWithDiscount,
  969. DiscountPercent: DiscountPercent,
  970. DiscountValue: DiscountValue,
  971. DiscountType: DiscountType,
  972. DiscountAmount: DiscountAmount,
  973. ItemValueAfterDiscount: AfterDiscountValue,
  974. StrTaxPercents: StrTaxPercents,
  975. AvailableQuantity: row.AvailableQuantity,
  976. AvailablePacks: row.AvailablePacks,
  977. AvailablePieces: row.AvailablePieces,
  978. TotalAvailablePieces: row.TotalAvailablePieces,
  979. ExchangeDC: IsExchangeDC,
  980. IsAfterTax: IsAfterTax,
  981. BaseQty: BaseQty,
  982. IsFocItem: false,
  983. optoutAmount: optoutAmount,
  984. TaxGroupId: TaxGroupId,
  985. TaxGroupName: TaxGroupName,
  986. TaxAmount: TaxAmount,
  987. TaxRateAmount: TaxRateAmount,
  988. TaxRate: row.TaxRate,
  989. TaxPercentage: row.TaxPercentage,
  990. IsOfferAvailable: row.IsOfferAvailable,
  991. IsOfferApplied: false,
  992. Description: row.Description == undefined ? "" : row.Description,
  993. Discountable: row.Discountable,
  994. PiecePrice: row.PiecePrice,
  995. CompositePrice: row.CompositePrice,
  996. CompositePiecePrice: row.CompositePiecePrice,
  997. IsCheckPendingItems: IsCheckPendingItems,
  998. IsError: false,
  999. ErrorMsg: "",
  1000. ErrorClass: "text-danger",
  1001. IsTaxError: IsTaxError,
  1002. IsLeverageError: IsLeverageError,
  1003. IsFocAdded: false,
  1004. RefItemIds: "",
  1005. RefItemSKUs: "",
  1006. FocItemIds: "",
  1007. DiscountGroupId: 0,
  1008. IsOfferDiscountApplied: false,
  1009. AppliedOfferVolume: 0,
  1010. AppliedPlanVolumeId: 0,
  1011. AppliedOfferId: 0,
  1012. OffersCount: row.OffersCount,
  1013. optoutOfferGroupId: 0,
  1014. SuggestedPacks: 0,
  1015. MinPacks: 0,
  1016. AvgPacks: 0,
  1017. InwardOrderPacks: 0,
  1018. OutwardOrderPacks: 0,
  1019. IsMultipleUOMs: row.IsMultipleUOMs,
  1020. UOMSchemaId: row.UOMSchemaId,
  1021. MultipleUOMs: row.MultipleUOMs,
  1022. SelectedUnitId: SelectedUnitId,
  1023. DefaultSize: DefaultSize,
  1024. IsBoMAvailable: row.IsBoMAvailable,
  1025. UOMQuantity: UOMQuantity,
  1026. ProductId: row.ProductId,
  1027. IsWishList: IsWishList,
  1028. OldUnitPrice: OldUnitPrice,
  1029. InstalledAppId: row.InstalledAppId,
  1030. };
  1031. if (SelectedItems_Index == -1) {
  1032. instance.g_SelectedItems.push(ItemData);
  1033. }
  1034. else {
  1035. instance.g_SelectedItems[SelectedItems_Index] = ItemData;
  1036. }
  1037. if (CartItems_Index == -1) {
  1038. instance.g_CartItems_New.push(ItemData);
  1039. }
  1040. else {
  1041. instance.g_CartItems_New[CartItems_Index] = ItemData;
  1042. }
  1043. let ItemElm = $(".variant-addeditem-" + ItemId);
  1044. if (ItemElm.length > 0) {
  1045. instance.updateItemsDesign(ItemElm, event);
  1046. }
  1047. if (!FromWidget) {
  1048. if (instance.g_CartItems_New.length == 0) {
  1049. $("#ulOrder_Cart").html('<li id="0" class="cartitem list-group-item col-xs-12 hidden clear no-border"></li> <li class="list-group-item col-xs-12 no-border EmptyCartLi"><strong>Your Shopping Cart is empty.</strong></li>');
  1050. }
  1051. else {
  1052. $(".EmptyCartLi").remove();
  1053. }
  1054. if (BaseQty == 0 && !instance.g_IsCheckOutForm) {
  1055. let html = `<div class="d-flex justify-content-center my-2 my-md-0"><button class="AddToCart btn-outline-primary rounded" id="AddToCart_` + ItemId + `" style="border:1px solid"><span class="ml-5"> Add to Cart </span></button></div>`;
  1056. $(elem).find(".InventoryTypesTextboxes").html(html);
  1057. instance.allItemEvents(elem);
  1058. if (ItemElm.length > 0 && instance.g_IsCheckOutForm) {
  1059. $(ItemElm).find(".InventoryTypesTextboxes").html(html);
  1060. instance.allItemEvents(ItemElm);
  1061. }
  1062. }
  1063. let Cart_elem = $(".cartitem-" + ItemId);
  1064. if (CartItems_Index != -1 && Cart_elem.length > 0) {
  1065. if (!FromWidget) {
  1066. let evnt = "EditCartItem";
  1067. if (event == "RefreshAllItems_InventoryClickEvents") {
  1068. evnt = event;
  1069. }
  1070. if (instance.g_IsCheckOutForm) {
  1071. instance.updateItemsDesign(Cart_elem, evnt, true);
  1072. }
  1073. }
  1074. }
  1075. else {
  1076. if (instance.g_IsCheckOutForm && event != "BindCartItems") {
  1077. instance.addCartItem(ItemId);
  1078. }
  1079. }
  1080. }
  1081. if (BaseQty != 0 || IsWishList == true) {
  1082. instance.checkValidations(ItemId, true);
  1083. instance.checkValidations(ItemId, false);
  1084. }
  1085. if (row.IsOfferAvailable && instance.g_IsCheckOutForm && event != "BindCartItems") {
  1086. instance.checkOffers(FromWidget, ItemId, "UpdateItemsArray");
  1087. }
  1088. else {
  1089. if (refreshTotals) {
  1090. instance.getTotals(ItemId, event);
  1091. }
  1092. }
  1093. }
  1094. getInventoryDesign(ItemId, IsCart, SuggestedPacks = 0, RefItemIds, event = "") {
  1095. let instance = this;
  1096. let html = "";
  1097. let InvType = "", fltngclass_Cartons = "", fltngclass_Pieces = "", PP_Cartons = "", PP_Pieces = "", IsFocItem = false, DisableQuantityTxtBox = "", HideMinusPlusBtns = "";
  1098. if (SuggestedPacks != 0) {
  1099. PP_Cartons = SuggestedPacks.toString();
  1100. }
  1101. let CartItem_Index = -1;
  1102. CartItem_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == RefItemIds);
  1103. let CartItem = instance.g_CartItems_New[CartItem_Index];
  1104. if (CartItem != undefined) {
  1105. PP_Cartons = CartItem.Packs.toString();
  1106. PP_Pieces = CartItem.Pieces.toString();
  1107. IsFocItem = CartItem.IsFocItem;
  1108. }
  1109. if (Number(PP_Cartons) == 0 && Number(PP_Pieces) == 0 && event == "") {
  1110. if (!instance.g_IsCheckOutForm) {
  1111. html = `<div class="d-flex justify-content-center my-2 my-md-0"><button class="AddToCart btn-outline-primary rounded " id="AddToCart_` + ItemId + `" style="border:1px solid"><span class="ml-5"> Add to Cart </span> </button></div>`;
  1112. return html;
  1113. }
  1114. }
  1115. if (event == "IsAddToCart") {
  1116. PP_Cartons = "0";
  1117. PP_Pieces = "0";
  1118. }
  1119. if (PP_Cartons == "0") {
  1120. PP_Cartons = "";
  1121. }
  1122. if (PP_Cartons != "") {
  1123. fltngclass_Cartons = "floating-label-form-group-with-value";
  1124. }
  1125. if (PP_Pieces == "0") {
  1126. PP_Pieces = "";
  1127. }
  1128. if (PP_Pieces != "") {
  1129. fltngclass_Pieces = "floating-label-form-group-with-value";
  1130. }
  1131. if (IsFocItem) {
  1132. DisableQuantityTxtBox = "disabled style='cursor:not-allowed'";
  1133. HideMinusPlusBtns = "hidden";
  1134. }
  1135. let InventoryTypeId = instance.g_InventoryApplyType;
  1136. let IsEnablePacks = instance.g_IsEnablePacks, IsEnablePieces = instance.g_IsEnablePieces;
  1137. if (IsFocItem) {
  1138. InventoryTypeId = Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity;
  1139. IsEnablePacks = true;
  1140. IsEnablePieces = false;
  1141. }
  1142. if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Packs || InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Pieces || InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.PacksAndPieces) {
  1143. if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Pieces && !instance.g_IsEnablePacks) {
  1144. $("#spn_picesTitle").removeClass("hidden").removeClass("col-sm-6").addClass("col-sm-12").removeClass("pr-90");
  1145. $("#spn_InventoryTitle").addClass("hidden").removeClass("pl-40");
  1146. }
  1147. else if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Packs && !instance.g_IsEnablePieces) {
  1148. $("#spn_picesTitle").addClass("hidden").removeClass("pr-90");
  1149. $("#spn_InventoryTitle").removeClass("hidden").removeClass("col-sm-6").addClass("col-sm-12").removeClass("pl-40");
  1150. }
  1151. else if (instance.g_IsEnablePacks && instance.g_IsEnablePieces) {
  1152. $("#spn_picesTitle").removeClass("hidden").removeClass("col-sm-12").addClass("col-sm-6").addClass("pr-90");
  1153. $("#spn_InventoryTitle").removeClass("hidden").removeClass("col-sm-12").addClass("col-sm-6").addClass("pl-40");
  1154. }
  1155. $("#spn_InventoryTitle").text("Cartons");
  1156. $("#spn_picesTitle").text("Pieces");
  1157. }
  1158. else if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity) {
  1159. $("#spn_InventoryTitle").text("Quantity");
  1160. $("#spn_picesTitle").addClass("hidden");
  1161. $("#spn_InventoryTitle").removeClass("hidden").removeClass("col-sm-6").addClass("col-sm-12");
  1162. }
  1163. if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity) {
  1164. InvType = "Quantity";
  1165. }
  1166. else if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Packs) {
  1167. InvType = "Cartons";
  1168. }
  1169. else if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Pieces) {
  1170. InvType = "Pieces";
  1171. }
  1172. let cartItemQtyClass = "";
  1173. if (IsCart) {
  1174. cartItemQtyClass = "_editCartItemQuantity";
  1175. }
  1176. if (IsEnablePacks && !IsEnablePieces) {
  1177. html += '<div class="col-sm-12 ' + cartItemQtyClass + '">' +
  1178. '<div class="floating-label-form-group defaultSelectedCartons divOrders_ItemCount ' + fltngclass_Cartons + '">' +
  1179. '<label class="text-center">' + InvType + '</label>' +
  1180. '<div class="input-group align-items-center" id="div_Cartons">' +
  1181. '<span class="input-group-prepend rounded-circle h-30p w-30p px-1 border align-items-center justify-content-center ' + HideMinusPlusBtns + '">' +
  1182. '<a href="javascript:;" class="text-dark input-group-addon btn quantity-minus p-0" draggable="false"><i class="fa fa-minus font-14"></i></a>' +
  1183. '</span>' +
  1184. '<input type="text" id="txt_Cartons" ' + DisableQuantityTxtBox + 'class="ml-2 form-control text-center txtOrder_ItemCount floating-label-control" inputmode="numeric" pattern="[0-9]+" onpaste = "return Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().isNumberKey(event)" onkeypress = "return Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().isNumberKey(event)" data-isdynamic="false" placeholder="' + InvType + '" data-placeholder="' + InvType + '" data-label="' + InvType + '"value=' + PP_Cartons + '>' +
  1185. '<span class="input-group-append rounded-circle h-30p w-30p justify-content-center px-1 border align-items-center ' + HideMinusPlusBtns + '">' +
  1186. '<a href="javascript:;" class="text-dark quantity-plus input-group-addon btn " draggable="false"><i class="fa fa-plus font-14"></i></a>' +
  1187. '</span>' +
  1188. '</div>' +
  1189. '</div>' +
  1190. '</div>';
  1191. }
  1192. else if (!IsEnablePacks && IsEnablePieces) {
  1193. html += '<div class="col-sm-12 ' + cartItemQtyClass + '">' +
  1194. '<div class="floating-label-form-group defaultSelectedPieces divOrders_ItemPieceCount ' + fltngclass_Pieces + '">' +
  1195. '<label class="text-center">' + InvType + '</label>' +
  1196. '<div class="input-group align-items-center" id="div_Pieces">' +
  1197. '<span class="input-group-prepend rounded-circle h-30p w-30p px-1 border align-items-center justify-content-center">' +
  1198. '<a href="javascript:;" class="text-dark input-group-addon btn quantity-minus p-0" draggable="false"><i class="fa fa-minus font-14"></i></a>' +
  1199. '</span>' +
  1200. '<input type="text" id="txt_Pieces" class="mr-2 form-control text-center txtOrder_ItemPieceCount floating-label-control" inputmode="numeric" pattern="[0-9]+" onpaste = "return Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().isNumberKey(event)" onkeypress = "return Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().isNumberKey(event)" data-isdynamic="false" placeholder="' + InvType + '" data-placeholder="' + InvType + '" data-label="' + InvType + '"value=' + PP_Pieces + '>' +
  1201. '<span class="input-group-append rounded-circle h-30p w-30p justify-content-center px-1 border align-items-center">' +
  1202. '<a href="javascript:;" class="text-dark quantity-plus input-group-addon btn" draggable="false"><i class="fa fa-plus font-14"></i></a>' +
  1203. '</span>' +
  1204. '</div>' +
  1205. '</div>' +
  1206. '</div>';
  1207. }
  1208. if (IsEnablePacks && IsEnablePieces) {
  1209. html += '<div class="' + cartItemQtyClass + '"><div class="d-flex ml-auto mw-200p">' +
  1210. '<div class="floating-label-form-group defaultSelectedCartons divOrders_ItemCount ' + fltngclass_Cartons + '">' +
  1211. '<div class="input-group align-items-center" id="div_Cartons">' +
  1212. '<span class="input-group-prepend rounded-circle h-30p w-30p px-1 border align-items-center justify-content-center">' +
  1213. '<a href="javascript:;" class="text-dark input-group-addon btn quantity-minus p-0" draggable="false"><i class="fa fa-minus font-14"></i></a>' +
  1214. '</span>';
  1215. html += '<input type="text" id="txt_Cartons" class="ml-2 form-control text-center txtOrder_ItemCount floating-label-control" inputmode="numeric" pattern="[0-9]+" onpaste = "return Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().isNumberKey(event)" pattern="[0-9]+" onkeypress = "return Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().isNumberKey(event)" data-isdynamic="false" placeholder="Cartons" data-placeholder="Cartons" data-label="Cartons" value=' + PP_Cartons + '>' +
  1216. '</div>' +
  1217. '</div>';
  1218. html += '<div class="' + cartItemQtyClass + '">' +
  1219. '<div class="floating-label-form-group defaultSelectedPieces divOrders_ItemPieceCount ' + fltngclass_Pieces + '"> ' +
  1220. '<label class="d-none text-center pr-20">Pieces</label>' +
  1221. '<div class="input-group align-items-center" id="div_Pieces">' +
  1222. '<input type="text" id="txt_Pieces" class="mr-2 form-control text-center floating-label-control txtOrder_ItemPieceCount" inputmode="numeric" onpaste = "return Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().isNumberKey(event)" onkeypress = "return Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().isNumberKey(event)" data-isdynamic="false" style = "margin-left: 7px;" placeholder="Pieces" data-placeholder="Pieces" data-label="Pieces" value=' + PP_Pieces + '>' +
  1223. '<span class="input-group-append rounded-circle h-30p w-30p justify-content-center px-1 border align-items-center">' +
  1224. '<a href="javascript:;" class="text-dark quantity-plus input-group-addon btn p-0" draggable="false"><i class="fa fa-plus font-14"></i></a>' +
  1225. '</span>' +
  1226. '</div>' +
  1227. '</div>' +
  1228. '</div>' +
  1229. '</div>' +
  1230. '</div>';
  1231. '</div>';
  1232. html += '</div>';
  1233. }
  1234. return html;
  1235. }
  1236. getItemDesign(res, FromWidget = false, IsCart = false) {
  1237. let instance = this;
  1238. let html = "";
  1239. let data = res;
  1240. let ItemId = data.ItemId;
  1241. let InventoryType = instance.g_InventoryApplyType;
  1242. let url = '';
  1243. let ItemImg = "";
  1244. let LoadedItemIndex = instance.g_LoadedItems.findIndex(x => x.ItemId == ItemId);
  1245. if (LoadedItemIndex != -1) {
  1246. data.ItemName = instance.g_LoadedItems[LoadedItemIndex].ItemName;
  1247. data.SKU = instance.g_LoadedItems[LoadedItemIndex].SKU;
  1248. url = instance.g_LoadedItems[LoadedItemIndex].ImageUrl;
  1249. if (url == "" || url == undefined || url == null) {
  1250. ItemImg = '';
  1251. }
  1252. else {
  1253. ItemImg = `<img class="item-img img-fluid w-50p h-50p" style="object-fit:cover;" onerror="ReloadImage(event)" data-dynamic="1" src="` + url + `">`;
  1254. }
  1255. }
  1256. else {
  1257. if (data.ImageUrl == "" || data.ImageUrl == undefined || data.ImageUrl == null) {
  1258. ItemImg = '';
  1259. }
  1260. else {
  1261. url = data.ImageUrl;
  1262. ItemImg = `<img class="item-img img-fluid w-50p h-50p" style="object-fit:cover;" onerror="ReloadImage(event)" data-dynamic="1" src="` + url + `">`;
  1263. }
  1264. }
  1265. let hidden = "";
  1266. let OrderQuantity = "";
  1267. let multiplevalue = "";
  1268. let Mod_UnitPrice = 0;
  1269. let Items_up = instance.g_ItemsUnitPrice_New.filter(x => x.ItemId == data.ItemId);
  1270. if (Items_up.length == 0) {
  1271. Mod_UnitPrice = data.UnitPrice;
  1272. instance.g_ItemsUnitPrice_New.push({
  1273. ItemId: ItemId,
  1274. UnitPrice: data.UnitPrice,
  1275. TaxRateAmount: data.TaxRateAmount
  1276. });
  1277. }
  1278. else {
  1279. Mod_UnitPrice = Items_up[0].UnitPrice;
  1280. }
  1281. let LiClass = "variant-item variant-addeditem variant-addeditem-" + ItemId;
  1282. let EditUnitPriceClass = 'editItemPriceAccordion_';
  1283. let AvailClass = "ItemAvailability";
  1284. let ExchangeClass = "chkItem_ExchangeDC_" + ItemId;
  1285. let ItemOnclick = "";
  1286. let HideDeleteBtn = "";
  1287. let RefItemIds = data.RefItemIds;
  1288. if (RefItemIds == undefined) {
  1289. RefItemIds = "";
  1290. }
  1291. if (!instance.g_IsCheckOutForm) {
  1292. ItemOnclick = "Unibase.Platform.Helpers.NavigationHelper.Instance().loadDetail(" + ItemId + ", " + data.InstalledAppId + ", null)";
  1293. }
  1294. if (IsCart) {
  1295. LiClass = "cartitem cartitem-" + ItemId;
  1296. EditUnitPriceClass = 'editCartItemPriceAccordion_';
  1297. AvailClass = "CartAvailability";
  1298. ExchangeClass = "chkCartItem_ExchangeDC_" + ItemId;
  1299. if (data.IsFocItem) {
  1300. HideDeleteBtn = "hidden";
  1301. if (RefItemIds != "") {
  1302. LiClass = "cartitem cartitem-" + ItemId + "-" + RefItemIds.replace(/,/g, "-");
  1303. }
  1304. }
  1305. }
  1306. else if (FromWidget) {
  1307. if (Bizgaze.Apps.Transact.Controls.AddOrderItems.Instance().g_Edit_OrderItemId > 0) {
  1308. HideDeleteBtn = "hidden";
  1309. }
  1310. if (RefItemIds != 0) {
  1311. LiClass = "variant-item variant-addeditem variant-addeditem-" + ItemId + "-" + RefItemIds.replace(/,/g, "-");
  1312. }
  1313. }
  1314. if (IsCart) {
  1315. html = '<li id="' + ItemId + '" class="d-md-flex justify-content-between align-items-center px-1 py-1 px-lg-3 mb-2 border-top-0 border-right-0 border-left-0 ' + LiClass + ' li no-border position-relative">' +
  1316. '<input type="hidden" class="hfOrder_ItemId" value="' + ItemId + '" />' +
  1317. '<input type="hidden" class="hfOrder_RefItemId" value="' + RefItemIds + '" />' +
  1318. '<input type="hidden" class="hfOrder_ItemName" value="' + data.ItemName + '" />' +
  1319. '<input type="hidden" class="hfOrder_ItemSKU" value="' + data.SKU + '" />';
  1320. }
  1321. else {
  1322. html = '<li id="' + ItemId + '" class="px-1 py-1 px-lg-3 mb-2 border-top-0 border-right-0 border-left-0 ' + LiClass + ' li no-border position-relative">' +
  1323. '<input type="hidden" class="hfOrder_ItemId" value="' + ItemId + '" />' +
  1324. '<input type="hidden" class="hfOrder_RefItemId" value="' + RefItemIds + '" />' +
  1325. '<input type="hidden" class="hfOrder_ItemName" value="' + data.ItemName + '" />' +
  1326. '<input type="hidden" class="hfOrder_ItemSKU" value="' + data.SKU + '" />';
  1327. }
  1328. let DivClass = 'col-sm-8';
  1329. let InventoryTypeDivClass = 'col-sm-4';
  1330. let deleteIcon;
  1331. if (instance.g_IsEnablePacks && instance.g_IsEnablePieces) {
  1332. DivClass = 'col-sm-9';
  1333. InventoryTypeDivClass = 'col-sm-3';
  1334. }
  1335. let isOfferBadge = "hidden";
  1336. let isBOMBadge = "hidden";
  1337. let isSPBadge = "d-none";
  1338. if (data.IsOfferAvailable == true && (data.RefItemId == undefined || data.RefItemId == 0)) {
  1339. isOfferBadge = "";
  1340. }
  1341. if (data.IsBoMAvailable) {
  1342. isBOMBadge = "";
  1343. }
  1344. if (data.IsSpecialPrice) {
  1345. isSPBadge = "";
  1346. }
  1347. html += '';
  1348. if (IsCart || FromWidget) {
  1349. html += '<div class="row align-items-center justify-content-between mx-0 w-100">' +
  1350. '<div style="position:absolute;top:2px;right:15px;z-index:9" class="d-flex align-items-center"><div class="wishlist-wrap d-none"><a href="javascript:;" id="AddItemToWishList"><i class="fa fa-heart-o WishList font-20 text-danger"></i></a></div><a href="javascript:;" class="align-self-start delete-cart-item d-none d-md-block" id="deleteCartItem"><span class="pa-0 ml-15 delete ' + HideDeleteBtn + ' cursor-pointer"><i class="fa fa-trash-o font-20 text-danger" id=""></i></span></a></div>' +
  1351. '<div class="ItemDetails d-flex align-items-center col-12 col-md-8 col-lg-9 px-0" id="ItemDetails">' +
  1352. '<a onclick="' + ItemOnclick + '" class="cursor-pointer item-img-link w-50p h-50p" data-src="' + url + '">' + ItemImg + '</a>';
  1353. html += '<div class="ml-15"><span class="cursor-pointer block text-sm mouseHoverClass CartItemName text-dark font-weight-bold" onclick="' + ItemOnclick + '">' + data.ItemName + '</span><span> - </span><span id="ItemSKU">' + data.SKU + '</span><br>';
  1354. }
  1355. else {
  1356. html += '<div class="row align-items-center justify-content-center justify-content-md-between mx-0">' +
  1357. '<div style="position:absolute;top:2px;right:15px;z-index:9" class="d-none align-items-center"><div class="wishlist-wrap"><a href="javascript:;" id="AddItemToWishList"><i class="fa fa-heart-o WishList font-20 text-danger"></i></a></div></div>' +
  1358. '<div class="ItemDetails d-flex align-items-center px-0 w-100 w-md-75" id="ItemDetails">' +
  1359. '<a onclick="' + ItemOnclick + '" class="cursor-pointer item-img-link w-50p h-50p" data-src="' + url + '">' + ItemImg + '</a>';
  1360. html += '<div class="align-items-center d-md-flex justify-content-between w-100"><div class="ml-15 font-14"><span class="cursor-pointer block text-sm mouseHoverClass CartItemName text-dark font-weight-bold" onclick="' + ItemOnclick + '">' + data.ItemName + '</span><span> - </span><span id="ItemSKU">' + data.SKU + '</span><br>';
  1361. }
  1362. let Price_dataToggle = "";
  1363. let PointsorPrice = "Price";
  1364. if (IsCart) {
  1365. html += '<div><span class="sp_PriceType text-dark font-14">' + PointsorPrice + ' : </span><span id="DiscountOpenBracket" class="hidden">(</span><span class="text-sm editItemPrice text-dark"' + Price_dataToggle + 'data-target="#' + EditUnitPriceClass + '' + ItemId + '">' + Mod_UnitPrice + '</span> <span class="CompositePriceCalBreak"> </span> <span id="QuantityAndDiscountSpan" class="text-dark"' + hidden + '"><span id="OrderQuantity_' + ItemId + '" class="OrderQuantity hidden" ></span></div>';
  1366. html += '<a class="font-12 font-weight-500 offerBadge ' + isOfferBadge + '" onclick="Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().showOfferItems(' + instance.g_OrganizationId + ',' + ItemId + ",'" + data.ItemName + "'," + instance.g_OrderTypeId + ',' + 'this)"><span class="d-none text-nowrap font-weight-bold offerstatusapplied" style="text-decoration:underline;color:#0CB51D"><i class="fa fa-tags pr-1"></i> Offer Applied</span><span class="up m-l-n-sm count text-nowrap font-weight-bold offerstatusavailable" style="text-decoration:underline;color:#0CB51D"><i class="fa fa-tags pr-1"></i><span id="spn_OffersApplied">' + instance.g_LoadedItems[LoadedItemIndex].OffersCount + '</span>';
  1367. if (instance.g_LoadedItems[LoadedItemIndex].OffersCount > 1) {
  1368. html += ' Offers available</span></a >';
  1369. }
  1370. else {
  1371. html += ' Offer available </span></a>';
  1372. }
  1373. html += '<span class="font-14 focBadge hidden"><span class="text-warning up m-l-n-sm count" style="">Free of SKU - <span id="FocBadgeSKU"> </span> </span></span>';
  1374. html += '<a class="font-14 bomBadge ' + isBOMBadge + '" onclick="Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().showBOMItems(' + ItemId + ",'" + data.ItemName + "'" + ')"><span class="up m-l-n-sm count" style="text-decoration:underline"> BOM </span></a>';
  1375. html += '<span class="font-14 up m-l-n-sm btnItemSpecial spBadge ' + isSPBadge + '" style="text-decoration:underline">SP</span>';
  1376. html += '</div><span class="text-danger tax-error hidden"></span><span id="multipliedvalue_' + ItemId + '" class="multipliedvalue hidden" ></span></span>';
  1377. }
  1378. else {
  1379. html += '<div><span class="sp_PriceType text-dark font-14">' + PointsorPrice + ' : </span><span id="DiscountOpenBracket" class="hidden">(</span><span class="text-sm editItemPrice text-dark"' + Price_dataToggle + 'data-target="#' + EditUnitPriceClass + '' + ItemId + '">' + Mod_UnitPrice + '</span> <span class="CompositePriceCalBreak"> </span> <span id="QuantityAndDiscountSpan" class="text-dark"' + hidden + '"><span id="OrderQuantity_' + ItemId + '" class="OrderQuantity hidden" ></span></div>';
  1380. if (instance.g_LoadedItems[LoadedItemIndex].OffersCount > 0) {
  1381. html += '<a class="font-12 font-weight-500 offerBadge ' + isOfferBadge + '" onclick = "Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().showOfferItems(' + instance.g_OrganizationId + ',' + ItemId + ", '" + data.ItemName + "', " + instance.g_OrderTypeId + ',' + 'this)" > <span class="up m-l-n-sm count text-nowrap font-weight-bold offerstatus" style = "text-decoration:underline;color:#0CB51D"><i class="fa fa-tags pr-1"></i><span>' + instance.g_LoadedItems[LoadedItemIndex].OffersCount + '</span>';
  1382. if (instance.g_LoadedItems[LoadedItemIndex].OffersCount > 1) {
  1383. html += ' Offers available</span></a >';
  1384. }
  1385. else {
  1386. html += ' Offer available </span></a>';
  1387. }
  1388. }
  1389. html += '</div><span class="text-danger tax-error hidden"></span><span id="multipliedvalue_' + ItemId + '" class="multipliedvalue hidden" ></span></span>';
  1390. }
  1391. let SuggestedPacks = 0;
  1392. if (IsCart) {
  1393. html += '</div></div>';
  1394. html += '<div class="py-10 py-md-0 col-12 col-md-4 col-lg-3 px-0 mt-md-30"><div class="d-flex d-md-block justify-content-between align-items-center">';
  1395. html += '<div id="InventoryTypesTextboxes" class="InventoryTypesTextboxes">';
  1396. }
  1397. else {
  1398. html += '</div></div>';
  1399. html += '<div class="px-0 d-flex justify-content-between align-items-center"><div class="ml-15">';
  1400. html += '<div id="InventoryTypesTextboxes" class="InventoryTypesTextboxes">';
  1401. }
  1402. html += instance.getInventoryDesign(ItemId, IsCart, SuggestedPacks, RefItemIds);
  1403. if (IsCart) {
  1404. html += `<a href="javascript:;" class="delete-cart-item btn btn-xs rounded btn-outline-danger d-md-none ml-2 ${HideDeleteBtn}" id="deleteCartItem"><span class="delete">Delete</span></a>`;
  1405. html += '</div>';
  1406. }
  1407. html += '</div>';
  1408. let classclaim = "col-sm-2";
  1409. html += '<div class="row collapse" id="' + EditUnitPriceClass + '' + ItemId + '">' +
  1410. '<div class="col-sm-12">' +
  1411. '<div class="input-group">' +
  1412. '<div class="col-sm-2">' +
  1413. '<div class="floating-label-form-group floating-label-form-group-with-value">';
  1414. html += '<label for="txt_editItemPrice">Unit price </label><input type="text" id="txt_editItemPrice" class="form-control floating-label-control txteditItemPrice" value="' + Mod_UnitPrice + '" data-isdynamic="false" placeholder="Unit Price" data-placeholder="Enter Unit Price" data-label="Unit Price" onpaste = "return Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().isNumberKey(event)" onkeypress="return Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().validateFloatKeyPress(this,event)" min="0"></div>';
  1415. let offerDiscountClass = "";
  1416. if (data.IsOfferAvailable) {
  1417. offerDiscountClass = "readonly";
  1418. }
  1419. let IsDiscountHidden = "";
  1420. html += '</div>' +
  1421. '<div class="col-sm-2 ' + IsDiscountHidden + '">' +
  1422. '<div class="floating-label-form-group discountFloatLabels">' +
  1423. '<label>Discount</label>' +
  1424. '<div class="input-group">' +
  1425. '<input type="text" id="Ord_txtdiscount" placeholder="Discount" data-isdynamic="false" onpaste = "return Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().isNumberKey(event)" onkeypress="return Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().validateFloatKeyPress(this,event)" data-placeholder="0.00" data-label="Discount" class="form-control ord_txtaddldiscount floating-label-control" value="" ' + offerDiscountClass + '>' +
  1426. '<div class="input-group-btn">' +
  1427. '<select class="btnOrder_DiscType mt-10 border-blue"><option value="2">Val</option><option value="1">%</option></select>' +
  1428. '</div>' +
  1429. '</div>' +
  1430. '</div>' +
  1431. '</div>' +
  1432. '<div class="' + classclaim + '">' +
  1433. '<div class="floating-label-form-group">' +
  1434. '<label>Description</label>' +
  1435. '<input type="text" id="txt_Description" class="form-control floating-label-control " data-isdynamic="false" placeholder="Description" data-placeholder="Description" data-label="Description">' +
  1436. '</div>' +
  1437. '</div>';
  1438. offerDiscountClass = "";
  1439. let IsItemExchangable = data.Discountable;
  1440. if ((instance.g_IsAdmin == 1 && IsItemExchangable) || (instance.g_IsShowExchangeDc == 1 && IsItemExchangable)) {
  1441. html += '<div class="col-sm-2 mt-40">' +
  1442. '<div class="custom-control custom-checkbox checkbox-primary">' +
  1443. '<input type="checkbox" class="custom-control-input chkItem_ExchangeDC" id="' + ExchangeClass + '">' +
  1444. '<label class="custom-control-label lbl_ExchangeDC_' + ItemId + '" for="' + ExchangeClass + '">Exchange</label>' +
  1445. '</div>' +
  1446. ' </div>';
  1447. }
  1448. let IsMultipleUOMs = data.IsMultipleUOMs;
  1449. let MultipleUOMs = data.MultipleUOMs;
  1450. if (IsMultipleUOMs) {
  1451. html += '<div id="div_MultipleUOMs_' + ItemId + '" class="div_MultipleUOMs floating-label-form-group-with-value col-sm-4" > ' +
  1452. '<label for= "lbl" id ="lbl_MultipleUOMs_' + ItemId + '"> UOM </label>';
  1453. html += '<select id="ddl_MultipleUOMs_' + ItemId + '" class="form-control type-control value-control dropdown_MultipleUOMs" placeholder="Select UOM" data-placeholder="Select UOM" data-label="UOM" data-isparent="false">';
  1454. html += '<option value="1"> -- Select -- </option>';
  1455. for (let i = 0; i < MultipleUOMs.length; i++) {
  1456. html += '<option value="' + MultipleUOMs[i].SchemaDetailId + '">' + MultipleUOMs[i].AlternateUnitName + ' ( ' + MultipleUOMs[i].DefaultSize + ' ' + MultipleUOMs[i].DefaultUnitName + ' ) </option>';
  1457. }
  1458. html += '</div> </select>';
  1459. html += '<p class="mt-10 text-warning ItemConversion_' + ItemId + '"> </p>';
  1460. }
  1461. html += '</div>';
  1462. html += ' </div>' +
  1463. ' </div>';
  1464. html += '</li>';
  1465. return html;
  1466. }
  1467. setItemAvatarText(itemId, itemName, isCart) {
  1468. let avatarTxt = "";
  1469. if (itemName) {
  1470. let headingTxt = itemName;
  1471. let matches = headingTxt.match(/\b(\w)/g);
  1472. if (matches.length == 1) {
  1473. avatarTxt = $.trim(headingTxt).substr(0, 2);
  1474. }
  1475. else {
  1476. avatarTxt = matches.join('').slice(0, 2);
  1477. }
  1478. let avatarHtml = `<div class="biz-highlight-color align-items-center d-flex w-50p h-50p justify-content-center rounded-circle"><span class="biz-primary-text-color font-weight-bold font-20">${avatarTxt}<span></div>`;
  1479. if (isCart) {
  1480. $(`.cartitem-${itemId}`).find('.item-img-link').html(avatarHtml);
  1481. }
  1482. else {
  1483. $(".variant-addeditem-" + itemId).find('.item-img-link').html(avatarHtml);
  1484. }
  1485. }
  1486. }
  1487. updateItemsDesign(elem, evnt, IsCart = false, IsFocItem = false) {
  1488. let instance = this;
  1489. let ItemId = $(elem).find(".hfOrder_ItemId").val();
  1490. let RefItemIds = $(elem).find(".hfOrder_RefItemId").val();
  1491. let CartItem_Index = -1;
  1492. if (IsFocItem) {
  1493. CartItem_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == RefItemIds);
  1494. }
  1495. else {
  1496. CartItem_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == "");
  1497. }
  1498. let Itm = instance.g_CartItems_New[CartItem_Index];
  1499. let UnitPrice = Itm.UnitPrice;
  1500. if (Itm.IsWishList == true && Itm.Quantity == 0) {
  1501. }
  1502. else {
  1503. $(elem).removeAttr("style");
  1504. }
  1505. let pricelabel = "Price";
  1506. if (instance.g_IsEnablePiecePrice)
  1507. pricelabel = "Piece Price";
  1508. if (instance.g_IsEnableCompositePrice) {
  1509. pricelabel = "Comp. Price";
  1510. }
  1511. if (instance.g_IsEnableCompositePiecePrice) {
  1512. pricelabel = "Comp. Piece Price";
  1513. }
  1514. $(".sp_PriceType").text(pricelabel + " : ");
  1515. let Cond = $("#ulOrder_Cart").is(":visible") || evnt == "BindItemList" || evnt == "FromWidget_FocItem" || evnt == "EditOrderItem" || evnt == "FromWidget" || evnt == "AddFocItem_IsOfferDiscountApplied" || evnt == "EditFocItem_IsOfferDiscountApplied" || evnt == "DeleteCartItem";
  1516. if (IsCart) {
  1517. Cond = !$("#ulOrder_Cart").is(":visible") || evnt == "EditFocItem" || evnt == "AddFocItem_IsOfferDiscountApplied" || evnt == "EditFocItem_IsOfferDiscountApplied";
  1518. }
  1519. if (Cond) {
  1520. let Cartons = Itm.Quantity;
  1521. if (instance.g_InventoryApplyType != Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity) {
  1522. Cartons = Itm.Packs;
  1523. }
  1524. if (Cartons > 0) {
  1525. $(elem).find(".txtOrder_ItemCount").val(Cartons);
  1526. }
  1527. else {
  1528. $(elem).find(".txtOrder_ItemCount").val("");
  1529. }
  1530. if (Itm.Pieces > 0) {
  1531. $(elem).find(".txtOrder_ItemPieceCount").val(Itm.Pieces);
  1532. }
  1533. else {
  1534. $(elem).find(".txtOrder_ItemPieceCount").val("");
  1535. }
  1536. $(elem).find("#txt_editItemPrice").val(Itm.UnitPriceWithOutTax);
  1537. $(elem).find(".btnOrder_DiscType").val(Itm.DiscountType);
  1538. let Discount = Itm.DiscountValue == 0 ? Itm.DiscountPercent : Itm.DiscountValue;
  1539. if (Discount == 0) {
  1540. $(elem).find("#Ord_txtdiscount").val("");
  1541. }
  1542. else {
  1543. $(elem).find("#Ord_txtdiscount").val(Discount);
  1544. }
  1545. }
  1546. if (!Itm.IsWishList) {
  1547. $(elem).find(".WishList").addClass("fa-heart-o").removeClass("fa-heart");
  1548. }
  1549. else {
  1550. $(elem).find(".WishList").addClass("fa-heart").removeClass("fa-heart-o");
  1551. }
  1552. if (Itm.Packs > 0) {
  1553. $(elem).find(".defaultSelectedCartons").addClass("floating-label-form-group-with-value");
  1554. }
  1555. if (Itm.Pieces > 0) {
  1556. $(elem).find(".defaultSelectedPieces").addClass("floating-label-form-group-with-value");
  1557. }
  1558. $(elem).find(".CompositePriceCalBreak").html('');
  1559. if (Itm.ExchangeDC) {
  1560. $(elem).find(".chkItem_ExchangeDC").prop("checked", true);
  1561. $(elem).find("#Ord_txtdiscount").attr("disabled", "disabled").css("cursor", "not-allowed");
  1562. $(elem).find(".btnOrder_DiscType").attr("disabled", "disabled").css("cursor", "not-allowed");
  1563. }
  1564. else {
  1565. $(elem).find(".chkItem_ExchangeDC").prop("checked", false);
  1566. $(elem).find("#Ord_txtdiscount").removeAttr("disabled").removeAttr("style");
  1567. $(elem).find(".btnOrder_DiscType").removeAttr("disabled").removeAttr("style");
  1568. }
  1569. if (Itm.IsOfferAvailable) {
  1570. $(elem).find(".offerBadge").removeClass("hidden");
  1571. $(elem).find("#Ord_txtdiscount").attr("disabled", "disabled").css("cursor", "not-allowed");
  1572. $(elem).find(".btnOrder_DiscType").attr("disabled", "disabled").css("cursor", "not-allowed");
  1573. }
  1574. else {
  1575. $(elem).find(".offerBadge").addClass("hidden");
  1576. $(elem).find("#Ord_txtdiscount").removeAttr("disabled").removeAttr("style");
  1577. $(elem).find(".btnOrder_DiscType").removeAttr("disabled").removeAttr("style");
  1578. }
  1579. if (Itm.IsBoMAvailable) {
  1580. $(elem).find(".bomBadge").removeClass("hidden");
  1581. }
  1582. else {
  1583. $(elem).find(".bomBadge").addClass("hidden");
  1584. }
  1585. if (Itm.IsMultipleUOMs) {
  1586. $(elem).find("#ddl_MultipleUOMs_" + ItemId).val(Itm.SelectedUnitId);
  1587. if (Itm.SelectedUnitId != 1 && Itm.SelectedUnitId != 0 && !isNaN(Itm.SelectedUnitId)) {
  1588. let UOM = Itm.MultipleUOMs.find(x => x.SchemaDetailId == Itm.SelectedUnitId);
  1589. let Conversion = UOM.AlternateSize + " " + UOM.AlternateUnitName + " = " + UOM.DefaultSize + " " + UOM.DefaultUnitName;
  1590. $(".ItemConversion_" + Itm.ItemId).text(Conversion);
  1591. }
  1592. else {
  1593. $(".ItemConversion_" + Itm.ItemId).text("");
  1594. }
  1595. }
  1596. if (IsCart) {
  1597. if (Itm.ExchangeDC) {
  1598. UnitPrice = -Itm.UnitPrice;
  1599. let ItemName = Itm.ItemName + " (Exchange) ";
  1600. $(".cartitem-" + ItemId).find(".CartItemName").html(ItemName);
  1601. $(".cartitem-" + ItemId).find(".CartItemName").append("<input type='checkbox' class='divAfterTax' checked/> After Tax");
  1602. }
  1603. else {
  1604. $(".cartitem-" + ItemId).find(".CartItemName").html(Itm.ItemName);
  1605. $(".cartitem-" + ItemId).find(".CartItemName").find(".divAfterTax").remove();
  1606. }
  1607. if (!$(".cartitem-" + ItemId).find('.item-img-link').data('src')) {
  1608. instance.setItemAvatarText(ItemId, Itm.ItemName, IsCart);
  1609. }
  1610. }
  1611. if (Itm.SKU != undefined) {
  1612. $(elem).find("#ItemSKU").text(Itm.SKU);
  1613. }
  1614. let _quantity = instance.roundOffIgnoreZerosAfterDecimal(Itm.BaseQty);
  1615. if (Itm.IsMultipleUOMs && Itm.UOMQuantity > 0) {
  1616. _quantity = Itm.UOMQuantity;
  1617. }
  1618. let AmountWithDiscount = instance.roundOffIgnoreZerosAfterDecimal(Number(Itm.AmountWithDiscount));
  1619. if (Itm.Packs == 0 && Itm.Pieces == 0) {
  1620. $(elem).find(".editItemPrice").text(Itm.UnitPrice);
  1621. $(elem).find("#QuantityAndDiscountSpan").text("");
  1622. }
  1623. else {
  1624. if (Itm.DiscountValue > 0) {
  1625. $(elem).find(".editItemPrice").text("(" + Itm.UnitPrice);
  1626. $(elem).find("#QuantityAndDiscountSpan").text(" - " + Number(Itm.DiscountValue) + ") X " + _quantity + '(' + Itm.UnitName + ')' + " = " + AmountWithDiscount);
  1627. $(elem).find(".discountFloatLabels").addClass("floating-label-form-group-with-value");
  1628. }
  1629. else if (Itm.DiscountPercent > 0) {
  1630. $(elem).find(".editItemPrice").text("(" + Itm.UnitPrice);
  1631. $(elem).find("#QuantityAndDiscountSpan").text(" - " + Number(Itm.DiscountPercent) + "%) x " + _quantity + '(' + Itm.UnitName + ')' + " = " + AmountWithDiscount);
  1632. $(elem).find(".discountFloatLabels").addClass("floating-label-form-group-with-value");
  1633. }
  1634. else {
  1635. $(elem).find(".editItemPrice").text(Number(UnitPrice));
  1636. $(elem).find("#QuantityAndDiscountSpan").text(" X " + _quantity + '(' + Itm.UnitName + ')' + " = " + AmountWithDiscount);
  1637. $(elem).find(".discountFloatLabels").removeClass("floating-label-form-group-with-value");
  1638. }
  1639. }
  1640. if (Itm.IsFocItem) {
  1641. $(elem).find(".editItemPrice").removeAttr("style").removeAttr("data-toggle").removeAttr("data-collapse").attr("disabled", "true").css("cursor", "not-allowed");
  1642. $(elem).find(".focBadge").removeClass("hidden");
  1643. $(elem).find("#FocBadgeSKU").text(Itm.RefItemSKUs);
  1644. }
  1645. if (Itm.Quantity == 0) {
  1646. $(".cartitem-" + Itm.ItemId).find('.offerstatusapplied').addClass('d-none');
  1647. $(".cartitem-" + Itm.ItemId).find('.offerstatusavailable').removeClass('d-none');
  1648. }
  1649. if (evnt == "RefreshAllItems_InventoryClickEvents" || evnt == "FromWidget") {
  1650. let html = instance.getInventoryDesign(ItemId, IsCart, 0, Itm.RefItemIds);
  1651. $(elem).find("#InventoryTypesTextboxes").html(html);
  1652. instance.allItemEvents(elem);
  1653. }
  1654. instance.checkErrors();
  1655. }
  1656. allItemEvents(elem) {
  1657. let instance = this;
  1658. if (!instance.g_PacksFocus && !instance.g_PiecesFocus) {
  1659. if (instance.g_IsEnablePacks) {
  1660. instance.g_PacksFocus = true;
  1661. }
  1662. else if (instance.g_IsEnablePieces) {
  1663. instance.g_PiecesFocus = false;
  1664. }
  1665. }
  1666. let timer;
  1667. $(".mouseHoverClass").hover(function () {
  1668. $(this).closest(".variant-item").find('.mouseHoverClass').css({ 'font-weight': 'bold' });
  1669. }, function () { $(this).closest(".variant-item").find('.mouseHoverClass').css({ 'font-weight': '' }); });
  1670. $(".editCartItemQuantity").unbind().click(function () {
  1671. let element = elem;
  1672. element.find("._editCartItemQuantity").toggleClass("hidden");
  1673. element.find(".editCartItemQuantity").toggleClass("hidden");
  1674. element.find(".CartAvailability").toggleClass("hidden");
  1675. });
  1676. $(elem).find('.txtOrder_ItemCount').unbind().click(function () {
  1677. instance.g_PacksFocus = true;
  1678. instance.g_PiecesFocus = false;
  1679. });
  1680. $(elem).find('.txtOrder_ItemPieceCount').unbind().click(function () {
  1681. instance.g_PiecesFocus = true;
  1682. instance.g_PacksFocus = false;
  1683. });
  1684. $(elem).find(".txteditItemPrice").unbind().keyup(function () {
  1685. clearTimeout(timer);
  1686. timer = setTimeout(function () {
  1687. let element = elem;
  1688. instance.updateItemsArray(element, "UnitPrice");
  1689. }, 300);
  1690. });
  1691. $(elem).find(".quantity-plus").unbind().click(function () {
  1692. let element = elem;
  1693. if (instance.g_PacksFocus) {
  1694. if (element.find("#txt_Pieces").val() == 0) {
  1695. element.find('.divOrders_ItemPieceCount').removeClass('floating-label-form-group-with-value');
  1696. }
  1697. element.find('.divOrders_ItemCount').addClass('floating-label-form-group-with-value');
  1698. let Packs = Number(element.find(".txtOrder_ItemCount").val());
  1699. let incVal = instance.getIncrementValue(Packs);
  1700. let val = instance.roundOffIgnoreZerosAfterDecimal(Packs + incVal);
  1701. element.find(".txtOrder_ItemCount").val(val);
  1702. }
  1703. if (instance.g_PiecesFocus) {
  1704. element.find('.divOrders_ItemPieceCount').addClass('floating-label-form-group-with-value');
  1705. let Pieces = Number(element.find(".txtOrder_ItemPieceCount").val());
  1706. let incVal = instance.getIncrementValue(Pieces);
  1707. let val = instance.roundOffIgnoreZerosAfterDecimal(Pieces + incVal);
  1708. element.find(".txtOrder_ItemPieceCount").val(val);
  1709. }
  1710. instance.updateItemsArray(element, "Plus");
  1711. });
  1712. $(elem).find(".quantity-minus").unbind().click(function () {
  1713. let element = elem;
  1714. let ItemId = element.find(".hfOrder_ItemId").val();
  1715. let Packs = Number(element.find(".txtOrder_ItemCount").val());
  1716. let Pieces = Number(element.find(".txtOrder_ItemPieceCount").val());
  1717. if (instance.g_PacksFocus) {
  1718. if (element.find("#txt_Pieces").val() == 0) {
  1719. element.find('.divOrders_ItemPieceCount').removeClass('floating-label-form-group-with-value');
  1720. }
  1721. element.find('.divOrders_ItemCount').addClass('floating-label-form-group-with-value');
  1722. let incVal = instance.getIncrementValue(Packs);
  1723. if (Packs - incVal == 0 && Pieces == 0 && !instance.g_IsCheckOutForm) {
  1724. let html = `<div class="d-flex justify-content-center my-2 my-md-0"><button class="AddToCart btn-outline-primary rounded" id="AddToCart_` + ItemId + `" style="border:1px solid"><span class="ml-5"> Add to Cart </span> </button></div>`;
  1725. $(element).find(".InventoryTypesTextboxes").html(html);
  1726. instance.allItemEvents(elem);
  1727. }
  1728. if (Packs > 0) {
  1729. let val = instance.roundOffIgnoreZerosAfterDecimal(Packs - incVal);
  1730. element.find(".txtOrder_ItemCount").val(val);
  1731. }
  1732. else if (Packs == 0 && Pieces > 0) {
  1733. element.find(".txtOrder_ItemCount").val(instance.roundOffIgnoreZerosAfterDecimal(Packs));
  1734. }
  1735. else {
  1736. element.find('.divOrders_ItemCount').removeClass('floating-label-form-group-with-value');
  1737. instance.deleteCartItems(ItemId);
  1738. return false;
  1739. }
  1740. }
  1741. if (instance.g_PiecesFocus) {
  1742. element.find('.divOrders_ItemPieceCount').addClass('floating-label-form-group-with-value');
  1743. let Pieces = Number(element.find(".txtOrder_ItemPieceCount").val());
  1744. let incVal = instance.getIncrementValue(Pieces);
  1745. if (Pieces - incVal == 0 && Packs == 0 && !instance.g_IsCheckOutForm) {
  1746. let html = `<div class="d-flex justify-content-center my-2 my-md-0"><button class="AddToCart btn-outline-primary rounded" id="AddToCart_` + ItemId + `" style="border:1px solid"><span class="ml-5"> Add to Cart </span></button></div>`;
  1747. $(element).find(".InventoryTypesTextboxes").html(html);
  1748. instance.allItemEvents(elem);
  1749. }
  1750. if (Pieces > 0) {
  1751. let val = instance.roundOffIgnoreZerosAfterDecimal(Pieces - incVal);
  1752. element.find(".txtOrder_ItemPieceCount").val(val);
  1753. }
  1754. else if (Pieces == 0 && Packs > 0) {
  1755. element.find(".txtOrder_ItemPieceCount").val(instance.roundOffIgnoreZerosAfterDecimal(Pieces));
  1756. }
  1757. else {
  1758. element.find('.divOrders_ItemPieceCount').removeClass('floating-label-form-group-with-value');
  1759. instance.deleteCartItems(ItemId);
  1760. return false;
  1761. }
  1762. }
  1763. instance.updateItemsArray(element, "Minus");
  1764. });
  1765. $(elem).find('.chkItem_ExchangeDC').unbind().change(function () {
  1766. let element = elem;
  1767. let ItemId = element.find(".hfOrder_ItemId").val();
  1768. if (element.find('.chkItem_ExchangeDC').prop("checked")) {
  1769. element.find('#Ord_txtdiscount').val('').prop("disabled", true).css("cursor", "not-allowed");
  1770. $(".cartitem-" + ItemId).find("#Ord_txtdiscount").val('').prop("disabled", true).css("cursor", "not-allowed");
  1771. }
  1772. else {
  1773. element.find('#Ord_txtdiscount').prop("disabled", false).css("cursor", "auto");
  1774. $(".cartitem-" + ItemId).find('#Ord_txtdiscount').prop("disabled", false).css("cursor", "auto");
  1775. }
  1776. instance.updateItemsArray(element, "Exchange");
  1777. });
  1778. $(elem).find(".txtOrder_ItemCount").keyup(function () {
  1779. clearTimeout(timer);
  1780. timer = setTimeout(function () {
  1781. instance.updateItemsArray(elem, "Packs");
  1782. }, 300);
  1783. });
  1784. $(elem).find(".txtOrder_ItemPieceCount").keyup(function () {
  1785. clearTimeout(timer);
  1786. timer = setTimeout(function () {
  1787. instance.updateItemsArray(elem, "Pieces");
  1788. }, 300);
  1789. });
  1790. $(elem).find(".btnOrder_DiscType").unbind().change(function () {
  1791. instance.updateItemsArray(elem, "DiscountType");
  1792. });
  1793. $(elem).find("#Ord_txtdiscount").unbind().keyup(function () {
  1794. clearTimeout(timer);
  1795. timer = setTimeout(function () {
  1796. instance.updateItemsArray(elem, "Discount");
  1797. }, 300);
  1798. });
  1799. $(elem).find("#txt_Description").unbind().keyup(function () {
  1800. clearTimeout(timer);
  1801. timer = setTimeout(function () {
  1802. let ItemId = elem.find(".hfOrder_ItemId").val();
  1803. let CartItem = instance.g_CartItems_New.find(x => x.ItemId == ItemId && x.RefItemIds == "");
  1804. CartItem.Description = elem.find("#txt_Description").val().toString();
  1805. }, 300);
  1806. });
  1807. $(elem).find(".delete").unbind().click(function () {
  1808. let FromWidget = false, isCenterVertical = false;
  1809. if (instance.g_CartItems_New.length <= 10) {
  1810. $(".CartItemFindTxt").addClass('hidden');
  1811. }
  1812. let message = "<img src='tenants/themes/compact/imgs/cart-icon.png' class='w-50p'><p class='text-dark-100 mt-10'>Are you sure! <br> Do you want to delete this item?</p>";
  1813. if (instance.g_CartItems_New.length == 1)
  1814. message = "<img src='tenants/themes/compact/imgs/cart-icon.png' class='w-50p'><p class='text-dark-100 mt-10'>Are you sure! <br> Do you want to empty your cart?</p>";
  1815. let itemid = $(this).parents(".cartitem").find(".hfOrder_ItemId").val();
  1816. if (itemid == undefined) {
  1817. itemid = $(this).parents(".variant-addeditem").find(".hfOrder_ItemId").val();
  1818. }
  1819. if ($(window).width() <= 767.98) {
  1820. isCenterVertical = true;
  1821. }
  1822. if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length > 0) {
  1823. FromWidget = true;
  1824. }
  1825. bootbox.confirm({
  1826. message: message,
  1827. closeButton: true,
  1828. className: 'delete-item-bootbox',
  1829. buttons: {
  1830. confirm: {
  1831. label: 'Confirm',
  1832. className: 'btn-success'
  1833. },
  1834. cancel: {
  1835. className: 'd-none'
  1836. }
  1837. },
  1838. centerVertical: isCenterVertical,
  1839. callback: function (result) {
  1840. if (result) {
  1841. instance.deleteCartItems(itemid, FromWidget);
  1842. }
  1843. }
  1844. });
  1845. });
  1846. $(elem).find(".div_MultipleUOMs").change(function () {
  1847. instance.updateItemsArray(elem, "UOMChange");
  1848. });
  1849. $(elem).find("#AddItemToWishList").click(function () {
  1850. $(elem).find(".WishList").toggleClass("fa-heart-o").toggleClass("fa-heart");
  1851. instance.updateItemsArray(elem, "WishList");
  1852. });
  1853. $(elem).find(".AddToCart").unbind().click(function () {
  1854. let element = elem;
  1855. let ItemId = element.find(".hfOrder_ItemId").val();
  1856. let html = instance.getInventoryDesign(ItemId, true, 0, 0, "IsAddToCart");
  1857. $(element).find(".InventoryTypesTextboxes").html(html);
  1858. instance.allItemEvents(element);
  1859. instance.g_PacksFocus = true;
  1860. instance.g_PiecesFocus = false;
  1861. element.find(".txtOrder_ItemCount").val(1);
  1862. instance.updateItemsArray(element, "Plus");
  1863. });
  1864. }
  1865. showBOMItems(ItemId, ItemName, element) {
  1866. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFiles(["apps/transact/components/orders/itembomselection.js"], function () {
  1867. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(0, "", Bizgaze.Apps.Transact.Components.Orders.ItemBOMSelection.Instance(), function () {
  1868. Bizgaze.Apps.Transact.Components.Orders.ItemBOMSelection.Instance().LoadBOMItems(ItemId, ItemName);
  1869. }, Unibase.Platform.Helpers.Size.Large);
  1870. });
  1871. }
  1872. itemSettingsEvents() {
  1873. let instance = this;
  1874. let timer;
  1875. $("#txt_SearchItem").off().on('input', function () {
  1876. clearTimeout(timer);
  1877. timer = setTimeout(function () {
  1878. instance.g_PageIndex = 0;
  1879. instance.checkIsCheckOutForm();
  1880. $("#div_ItemList").html('<ul class="variant-list list-group" id="Items-list"><li class="variant-item hidden"></li>');
  1881. instance.loadItems($("#txt_SearchItem").val());
  1882. }, 1500);
  1883. });
  1884. $("#ItemLoadType").unbind().change(function () {
  1885. instance.checkIsCheckOutForm();
  1886. $("#txt_SearchItem").val('');
  1887. $("#ItemLoadType option[value='0']").remove();
  1888. let type = $("#ItemLoadType option:selected").text();
  1889. if (type != "Filter" && !Bizgaze.Apps.Transact.Components.OrderFilter.Instance().g_OnlyFilters) {
  1890. instance.g_IsFilterApplied = false;
  1891. instance.g_FilteredTags = '';
  1892. Bizgaze.Apps.Transact.Components.OrderFilter.Instance().g_TagArray = [];
  1893. Bizgaze.Apps.Transact.Components.OrderFilter.Instance().g_ClearingTags = "";
  1894. }
  1895. instance.g_PageIndex = 0;
  1896. if (type == "Filter") {
  1897. instance.navigationHelper.popup("POS", '', Bizgaze.Apps.Transact.Components.OrderFilter.Instance(), null, Unibase.Platform.Helpers.Size.Medium);
  1898. }
  1899. else {
  1900. $("#div_ItemList").html('<ul class="variant-list list-group" id="Items-list"><li class="variant-item hidden"></li>');
  1901. instance.loadItems(type);
  1902. }
  1903. });
  1904. $(".ContinueShopping").unbind().click(function () {
  1905. instance.navigationHelper.closePopUp();
  1906. instance.closePlaceAnOrder("ContinueShopping");
  1907. instance.g_CartItems_New = [];
  1908. instance.g_SelectedItems = [];
  1909. instance.checkIsCheckOutForm();
  1910. if (!$(".variant-list").is(":visible")) {
  1911. instance.fileCacheHelper.loadJsFile("platform/dashboards/managers/dashboardmanager.js", function () {
  1912. Unibase.Platform.Dashboards.Managers.DashboardManager.Instance().getDashboardGroupbyName("Place An Order").then(function (res) {
  1913. $(".liDashboardGroup_" + res.result.DashboardGroupId).click();
  1914. Unibase.Themes.Compact.Components.Nav.Instance().loadDashboardsInDashboard(res.result.DashboardGroupId, 0, true);
  1915. });
  1916. });
  1917. }
  1918. instance.checkIsCheckOutForm();
  1919. });
  1920. }
  1921. closePlaceAnOrder(evnt) {
  1922. let instance = this;
  1923. instance.g_CartItems_New = [];
  1924. instance.g_SelectedItems = [];
  1925. instance.checkIsCheckOutForm();
  1926. $("#div_ItemList").html('<ul class="variant-list list-group" id="Items-list"><li class="variant-item variant-item-noitems"><div class="text-center"> </div></li></ul>');
  1927. $("#ItemLoadType").val(1);
  1928. instance.g_PageIndex = 0;
  1929. if ($(".variant-list").length != 0) {
  1930. instance.bindCartItems();
  1931. }
  1932. else {
  1933. if (evnt == "CloseForm") {
  1934. instance.fileCacheHelper.loadJsFile("platform/dashboards/managers/dashboardmanager.js", function () {
  1935. Unibase.Platform.Dashboards.Managers.DashboardManager.Instance().getDashboardGroupbyName("My Cart").then(function (res) {
  1936. $(".liDashboardGroup_" + res.result.DashboardGroupId).click();
  1937. Unibase.Themes.Compact.Components.Nav.Instance().loadDashboardsInDashboard(res.result.DashboardGroupId, 0, true);
  1938. });
  1939. });
  1940. }
  1941. }
  1942. }
  1943. showOfferItems(OrganizationId, ItemId, ItemName, OrderType, element) {
  1944. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFiles(["apps/transact/components/invoices/itemofferselection.js", "apps/transact/controls/invoices/invoiceitem.component.js"], function () {
  1945. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(0, "", Bizgaze.Apps.Transact.Components.Invoices.ItemOfferSelection.Instance(), function () {
  1946. Bizgaze.Apps.Transact.Components.Invoices.ItemOfferSelection.Instance().LoadOfferItems(OrganizationId, ItemId, ItemName, OrderType, $(element), "POS_Order");
  1947. }, Unibase.Platform.Helpers.Size.Large);
  1948. });
  1949. }
  1950. applyOffer(Item) {
  1951. let instance = this;
  1952. let ItemId = Item[0].ItemId;
  1953. let Qty = Item[0].Volume;
  1954. let LoadedItem = instance.g_LoadedItems.find(x => x.ItemId == ItemId);
  1955. let Cartons = Math.ceil(Qty / (LoadedItem.PackCount * LoadedItem.PackSize));
  1956. if (instance.g_InventoryApplyType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Packs) {
  1957. if (!instance.g_IsCheckOutForm) {
  1958. $('.variant-addeditem-' + ItemId).find('#txt_Cartons').val(Cartons);
  1959. $('.variant-addeditem-' + ItemId).find('#txt_Pieces').val("");
  1960. }
  1961. else {
  1962. $('.cartitem-' + ItemId).find('#txt_Cartons').val(Cartons);
  1963. $('.cartitem-' + ItemId).find('#txt_Pieces').val("");
  1964. }
  1965. }
  1966. else if (instance.g_InventoryApplyType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Pieces) {
  1967. let Pieces = Math.ceil((Qty) / LoadedItem.PackSize);
  1968. if (!instance.g_IsCheckOutForm) {
  1969. $('.variant-addeditem-' + ItemId).find('#txt_Cartons').val("");
  1970. $('.variant-addeditem-' + ItemId).find('#txt_Pieces').val(Pieces);
  1971. }
  1972. else {
  1973. $('.cartitem-' + ItemId).find('#txt_Cartons').val(0);
  1974. $('.cartitem-' + ItemId).find('#txt_Pieces').val(Pieces);
  1975. }
  1976. }
  1977. else if (instance.g_InventoryApplyType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.PacksAndPieces) {
  1978. if (!instance.g_IsCheckOutForm) {
  1979. if (Cartons > 0) {
  1980. $('.variant-addeditem-' + ItemId).find('#txt_Cartons').val(Cartons);
  1981. }
  1982. else {
  1983. $('.variant-addeditem-' + ItemId).find('#txt_Cartons').val("");
  1984. }
  1985. }
  1986. else {
  1987. if (Cartons > 0) {
  1988. $('.cartitem-' + ItemId).find('#txt_Cartons').val(Cartons);
  1989. }
  1990. else {
  1991. $('.cartitem-' + ItemId).find('#txt_Cartons').val("");
  1992. }
  1993. }
  1994. }
  1995. else {
  1996. if (!instance.g_IsCheckOutForm) {
  1997. $('.variant-addeditem-' + ItemId).find('#txt_Cartons').val(Qty);
  1998. $('.variant-addeditem-' + ItemId).find('#txt_Pieces').val(0);
  1999. }
  2000. else {
  2001. $('.cartitem-' + ItemId).find('#txt_Cartons').val(Qty);
  2002. $('.cartitem-' + ItemId).find('#txt_Pieces').val(0);
  2003. }
  2004. }
  2005. if (!instance.g_IsCheckOutForm) {
  2006. let element = $('.variant-addeditem-' + ItemId);
  2007. instance.updateItemsArray(element, "ApplyOffer", false, 0);
  2008. }
  2009. else {
  2010. let element = $('.cartitem-' + ItemId);
  2011. instance.updateItemsArray(element, "ApplyOffer", false, 0);
  2012. }
  2013. }
  2014. checkOffers(FromWidget, ItemId, evnt) {
  2015. return __awaiter(this, void 0, void 0, function* () {
  2016. let instance = this;
  2017. let IsCart = false;
  2018. if ($("#ulOrder_Cart").is(":visible")) {
  2019. IsCart = true;
  2020. }
  2021. let ordItems = new Array();
  2022. let applyType = '';
  2023. if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Sales || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.SalesClaim) {
  2024. applyType = 'Sales';
  2025. }
  2026. else if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Purchase || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseClaim)
  2027. applyType = 'Purchases';
  2028. instance.g_CartItems_New.filter(x => x.IsFocItem == false).forEach(function (c) {
  2029. c.IsFocAdded = false;
  2030. c.FocItemIds = '';
  2031. c.IsOfferDiscountApplied = false;
  2032. c.AppliedOfferVolume = 0;
  2033. c.AppliedPlanVolumeId = 0;
  2034. c.AppliedOfferId = 0;
  2035. let ItemId = c.ItemId;
  2036. let baseqty = Number(c.BaseQty);
  2037. let unitPrice = Number(c.UnitPrice);
  2038. let rowTotal = instance.roundOff(baseqty * unitPrice);
  2039. ordItems.push({
  2040. ItemId: Number(ItemId),
  2041. Quantity: baseqty,
  2042. RowTotal: Number(rowTotal),
  2043. });
  2044. });
  2045. let ApplyDate = new Date();
  2046. let postData = {
  2047. OrderItems: ordItems,
  2048. ContactId: instance.g_OrganizationId,
  2049. ApplyType: instance.g_OrderTypeId,
  2050. ApplyDate: ApplyDate
  2051. };
  2052. Bizgaze.Apps.Transact.Managers.OfferManager.Instance().getRelatedOffersByItem(postData).then(function (response) {
  2053. return __awaiter(this, void 0, void 0, function* () {
  2054. if (response != null && response.Result.length != 0) {
  2055. instance.g_CartItems_New.filter(x => x.RefItemIds == "").forEach(function (c) {
  2056. c.DiscountPercent = 0;
  2057. c.DiscountValue = 0;
  2058. c.IsOfferApplied = false;
  2059. $(".cartitem-" + c.ItemId).find('.offerstatusapplied').addClass('d-none');
  2060. $(".cartitem-" + c.ItemId).find('.offerstatusavailable').removeClass('d-none');
  2061. });
  2062. let AllFocItems = [];
  2063. for (let i = 0; i < response.Result.length; i++) {
  2064. let data = response.Result[i];
  2065. let appliedItems = data.applyIds.split(',');
  2066. let discValue = 0;
  2067. let discPercent = 0;
  2068. if (data.PayoutValue > 0)
  2069. discValue = data.PayoutValue;
  2070. else if (data.OPayoutValue > 0)
  2071. discValue = data.OPayoutValue;
  2072. else if (data.PayoutPercent > 0)
  2073. discPercent = data.PayoutPercent;
  2074. let volume = data.Volume;
  2075. let focItems = data.ItemVolumePayouts;
  2076. for (let f = 0; f < focItems.length; f++) {
  2077. if (focItems[f].Quantity != 0) {
  2078. AllFocItems.push(focItems[f]);
  2079. }
  2080. }
  2081. let contactId = instance.g_OrganizationId;
  2082. for (let j = 0; j < focItems.length; j++) {
  2083. let focItem_RefItemIds = focItems[j].RefItemIds;
  2084. let focItem_RefSKUs = focItems[j].RefItemSKUs;
  2085. let ValidFocIndex = instance.g_ValidFocItems.findIndex(x => x.ItemId == focItems[j].ItemId && x.RefItemIds == focItem_RefItemIds);
  2086. let CartItemIndex = instance.g_CartItems_New.findIndex(x => x.ItemId == focItems[j].ItemId);
  2087. let focRefItem_Ids = focItem_RefItemIds.split(",");
  2088. for (let f = 0; f < focRefItem_Ids.length; f++) {
  2089. let focRefItem = instance.g_CartItems_New.find(x => x.ItemId == focRefItem_Ids[f] && x.RefItemIds == "");
  2090. focRefItem.IsOfferApplied = true;
  2091. $(".cartitem-" + focRefItem.ItemId).find('.offerstatusapplied').removeClass('d-none');
  2092. $(".cartitem-" + focRefItem.ItemId).find('.offerstatusavailable').addClass('d-none');
  2093. }
  2094. if (focItems[j].Quantity > 0 && ((ValidFocIndex != -1 && focItems[j].IsFoC) || (!focItems[j].IsFoC))) {
  2095. let FocItem_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == focItems[j].ItemId && x.RefItemIds == focItem_RefItemIds);
  2096. if (FocItem_Index == -1) {
  2097. instance.addFocItemToCart(contactId, focItems[j].ItemId, focItems[j].Quantity, focItems[j].Discount, focItem_RefItemIds, FromWidget, focItem_RefSKUs);
  2098. }
  2099. else {
  2100. instance.editFocCartItem(focItems[j].ItemId, focItems[j].Quantity, FromWidget);
  2101. }
  2102. }
  2103. else if (CartItemIndex != -1) {
  2104. instance.deleteCartItems(focItems[j].ItemId, FromWidget, focItem_RefItemIds);
  2105. }
  2106. }
  2107. for (let m = 0; m < appliedItems.length; m++) {
  2108. let n = instance.g_CartItems_New.findIndex(x => x.ItemId == appliedItems[m] && x.RefItemIds == "");
  2109. if (n != -1) {
  2110. if (discValue > 0 || discPercent > 0) {
  2111. instance.g_CartItems_New[n].DiscountValue = discValue;
  2112. instance.g_CartItems_New[n].DiscountPercent = discPercent;
  2113. instance.g_CartItems_New[n].IsFocAdded = true;
  2114. instance.g_CartItems_New[n].IsOfferDiscountApplied = true;
  2115. instance.g_CartItems_New[n].AppliedOfferVolume = volume;
  2116. instance.g_CartItems_New[n].AppliedPlanVolumeId = data.PlanVolumeId;
  2117. instance.g_CartItems_New[n].AppliedOfferId = data.OfferId;
  2118. instance.g_CartItems_New[n].IsOfferApplied = true;
  2119. $(".cartitem-" + instance.g_CartItems_New[n].ItemId).find('.offerstatusapplied').removeClass('d-none');
  2120. $(".cartitem-" + instance.g_CartItems_New[n].ItemId).find('.offerstatusavailable').addClass('d-none');
  2121. let Elem = $(".variant-addeditem-" + instance.g_CartItems_New[n].ItemId);
  2122. let Cart_Elem = $(".cartitem-" + instance.g_CartItems_New[n].ItemId);
  2123. let Discount = discValue == 0 ? discPercent : discValue;
  2124. $(Elem).find("#Ord_txtdiscount").val(Discount);
  2125. $(Cart_Elem).find("#Ord_txtdiscount").val(Discount);
  2126. let DiscountType = discValue == 0 ? 1 : 2;
  2127. $(Elem).find(".btnOrder_DiscType").val(DiscountType);
  2128. $(Cart_Elem).find(".btnOrder_DiscType").val(DiscountType);
  2129. let AssessableAmount = Number(instance.g_CartItems_New[n].Amount);
  2130. let discVal = Number(instance.g_CartItems_New[n].DiscountValue) * Number(instance.g_CartItems_New[n].BaseQty);
  2131. let DiscAmount = Number((instance.g_CartItems_New[n].Amount * discPercent) / 100) + Number(discVal);
  2132. let discAmt = DiscAmount + Number(instance.g_CartItems_New[n].optoutAmount);
  2133. AssessableAmount = Number(AssessableAmount) - Number(discAmt);
  2134. let AmountWithDiscount = Number(instance.g_CartItems_New[n].Amount) - Number(DiscAmount);
  2135. instance.g_CartItems_New[n].DiscountAmount = discAmt;
  2136. instance.g_CartItems_New[n].AmountWithDiscount = AmountWithDiscount;
  2137. instance.g_CartItems_New[n].DiscountType = DiscountType;
  2138. }
  2139. let amount = Number(instance.g_CartItems_New[n].UnitPrice) * Number(instance.g_CartItems_New[n].BaseQty);
  2140. let discAmt = Number(instance.roundOff((amount * discPercent) / 100)) + Number(instance.roundOff(discValue));
  2141. if (discAmt != 0) {
  2142. let assessableAmount = Number(amount) - Number(discAmt);
  2143. let orderType = instance.g_OrderType;
  2144. let billingAddressId = Number($('.txtAutoComplete_billfromaddressid').val());
  2145. let BillToAddressId = Number($('.txtAutoComplete_billingaddressid').val());
  2146. }
  2147. else {
  2148. }
  2149. }
  2150. instance.g_CartItems_New.filter(x => x.IsFocItem == false).forEach(function (c) {
  2151. if (!FromWidget) {
  2152. let Elem = $(".variant-addeditem-" + c.ItemId);
  2153. let Cart_Elem = $(".cartitem-" + c.ItemId);
  2154. instance.updateItemsDesign(Elem, "AddFocItem_IsOfferDiscountApplied", IsCart);
  2155. instance.updateItemsDesign(Cart_Elem, "AddFocItem_IsOfferDiscountApplied", IsCart);
  2156. }
  2157. });
  2158. }
  2159. }
  2160. let Ref_Items = instance.g_CartItems_New.filter(x => x.RefItemIds != "");
  2161. for (let r = 0; r < Ref_Items.length; r++) {
  2162. let a = AllFocItems.findIndex(x => x.ItemId == Ref_Items[r].ItemId);
  2163. if (a == -1) {
  2164. instance.deleteCartItems(Ref_Items[r].ItemId, FromWidget, Ref_Items[r].RefItemIds);
  2165. }
  2166. }
  2167. }
  2168. else {
  2169. instance.g_CartItems_New.filter(x => x.IsFocItem == true).forEach(function (c) {
  2170. let Foc_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == c.ItemId && x.RefItemIds != "");
  2171. instance.g_CartItems_New.splice(Foc_Index, 1);
  2172. $(".cartitem-" + c.ItemId + "-" + c.RefItemIds.replace(/,/g, "-")).remove();
  2173. if (FromWidget) {
  2174. $(".variant-addeditem-" + c.ItemId + "-" + c.RefItemIds.replace(/,/g, "-")).remove();
  2175. }
  2176. });
  2177. }
  2178. instance.getTotals(ItemId);
  2179. if (instance.g_CartItems_New.length == 0) {
  2180. $("#ulOrder_Cart").html('<li id="0" class="cartitem list-group-item col-xs-12 hidden clear no-border"></li> <li class="list-group-item col-xs-12 no-border EmptyCartLi"><strong>Your Shopping Cart is empty.</strong></li>');
  2181. }
  2182. else {
  2183. $(".EmptyCartLi").remove();
  2184. }
  2185. });
  2186. });
  2187. });
  2188. }
  2189. addFocItemToCart(ContactId, ItemId, Quantity, Discount, RefItemIds, FromWidget, RefItemSKUs = "") {
  2190. let instance = this;
  2191. let ShippingAddressId = instance.g_ShippingAddressId;
  2192. let BranchId = instance.g_BranchId;
  2193. let LobId = instance.g_LobId;
  2194. let OrderItemId = 0;
  2195. if (FromWidget) {
  2196. ShippingAddressId = Bizgaze.Apps.Transact.Controls.AddOrderItems.Instance().g_ShippingAddressId;
  2197. BranchId = Bizgaze.Apps.Transact.Controls.AddOrderItems.Instance().g_BranchId;
  2198. LobId = Bizgaze.Apps.Transact.Controls.AddOrderItems.Instance().g_LobId;
  2199. let FocItem = Bizgaze.Apps.Transact.Controls.AddOrderItems.Instance().g_FocItems.find(x => x.ItemId == ItemId);
  2200. if (FocItem != undefined) {
  2201. OrderItemId = FocItem.OrderItemId;
  2202. }
  2203. }
  2204. let postdata = {
  2205. PriceCodeId: Number(instance.g_PriceCodeId),
  2206. ContactId: ContactId,
  2207. ShippingAddressId: Number(ShippingAddressId),
  2208. BranchId: Number(BranchId),
  2209. WareHouseId: Number(instance.g_WarehouseId),
  2210. LobId: Number(LobId),
  2211. OrderType: instance.g_OrderTypeId,
  2212. OfferOnly: false,
  2213. IsExcise: instance.g_IsExcise,
  2214. SearchTerm: "",
  2215. Page: instance.g_PageIndex,
  2216. IsCompositePrice: instance.g_IsEnableCompositePrice,
  2217. IsPiecePrice: instance.g_IsEnablePiecePrice,
  2218. IsCompositePiecePrice: instance.g_IsEnableCompositePiecePrice,
  2219. Rows: instance.g_PageSize,
  2220. ItemId: ItemId.toString(),
  2221. CountryId: instance.g_CountryId,
  2222. ItemGroupId: 0,
  2223. Tags: "",
  2224. IsPoints: false,
  2225. Points: 0,
  2226. IsEligibleItemsOnly: false,
  2227. ProductId: 0,
  2228. IsFocItem: true
  2229. };
  2230. Bizgaze.Apps.Transact.Managers.ItemManager.Instance().getVariantsForOrder(postdata).then(function (response) {
  2231. let data = response.result[0];
  2232. instance.g_LoadedItems.push(data);
  2233. let ItemName = data.ItemName;
  2234. let ItemId = Number(data.ItemId);
  2235. let Packs = 0;
  2236. let PackCount = data.PackCount;
  2237. let PackSize = data.PackSize;
  2238. let UnitPrice = data.UnitPrice;
  2239. let UnitName = data.UnitName;
  2240. let ExpectedPrice = data.UnitPrice;
  2241. let discType = 1;
  2242. let DiscPercent = 0;
  2243. let DiscVal = 0;
  2244. let PriceListId = 0;
  2245. let AvailablePacks = data.AvailablePacks;
  2246. let AvailablePieces = data.AvailablePieces;
  2247. let AvailableQuantity = data.AvailableQuantity;
  2248. let TotalAvailablePieces = data.TotalAvailablePieces;
  2249. let SKU = data.SKU;
  2250. if (Number(PackCount) == 0)
  2251. PackCount = 1;
  2252. if (Number(PackSize) == 0)
  2253. PackSize = 1;
  2254. Quantity = instance.roundOffIgnoreZerosAfterDecimal(Quantity);
  2255. Packs = Number(Quantity) / (PackCount * PackSize);
  2256. let amount = Number(Quantity) * UnitPrice;
  2257. let assessableAmount = Number(amount);
  2258. let discAmt = 0;
  2259. if (discType == 2) {
  2260. DiscVal = Discount;
  2261. discAmt = Number(DiscVal) * Number(Quantity);
  2262. assessableAmount = instance.roundOff(amount - discAmt);
  2263. }
  2264. else if (discType == 1) {
  2265. DiscPercent = Discount;
  2266. discAmt = Number((amount * DiscPercent) / 100);
  2267. assessableAmount = instance.roundOff(Number(assessableAmount) - Number(discAmt));
  2268. if (amount == 0)
  2269. assessableAmount = 0;
  2270. }
  2271. let BaseQty = Number(PackCount) * Number(PackSize) * Number(Packs);
  2272. let IsCalculateTax = instance.g_IsCalculateTax;
  2273. let TaxGroupId = 0;
  2274. let TaxAmount = 0;
  2275. let StrTaxPercents = "";
  2276. let TaxGroupName = "";
  2277. let IsTaxError = false;
  2278. if (IsCalculateTax) {
  2279. if (data.TaxGroupId == 0) {
  2280. IsTaxError = true;
  2281. }
  2282. else {
  2283. TaxGroupId = data.TaxGroupId;
  2284. TaxGroupName = data.TaxGroupName;
  2285. for (let p = 0; p < data.TaxPercentList.length; p++) {
  2286. let percen = data.TaxPercentList[p];
  2287. let tax = assessableAmount * percen.Percentage / 100;
  2288. TaxAmount += tax;
  2289. }
  2290. StrTaxPercents = data.strTaxPercents;
  2291. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.None;
  2292. }
  2293. }
  2294. let CItemIndex = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds != "");
  2295. if (CItemIndex != -1) {
  2296. instance.g_CartItems_New.splice(CItemIndex, 1);
  2297. }
  2298. let ItemIndex = instance.g_CartItems_New.length + 1;
  2299. instance.g_CartItems_New.push({
  2300. OrderItemId: OrderItemId,
  2301. ItemIndex: ItemIndex,
  2302. ItemId: ItemId,
  2303. ItemName: ItemName,
  2304. Packs: Quantity,
  2305. Pieces: 0,
  2306. PriceListId: 0,
  2307. UnitPrice: UnitPrice,
  2308. UnitPriceWithOutTax: UnitPrice,
  2309. ExpectedPrice: ExpectedPrice,
  2310. ActualPrice: UnitPrice,
  2311. PackCount: PackCount,
  2312. PackSize: PackSize,
  2313. UnitName: UnitName,
  2314. Quantity: Quantity,
  2315. SKU: SKU,
  2316. PartNo: "",
  2317. Amount: amount,
  2318. AmountWithDiscount: assessableAmount,
  2319. DiscountPercent: DiscPercent,
  2320. DiscountValue: DiscVal,
  2321. DiscountType: discType,
  2322. DiscountAmount: discAmt,
  2323. ItemValueAfterDiscount: assessableAmount,
  2324. StrTaxPercents: StrTaxPercents,
  2325. AvailableQuantity: AvailableQuantity,
  2326. AvailablePacks: AvailablePacks,
  2327. AvailablePieces: AvailablePieces,
  2328. TotalAvailablePieces: TotalAvailablePieces,
  2329. ExchangeDC: false,
  2330. IsAfterTax: false,
  2331. BaseQty: BaseQty,
  2332. IsFocItem: true,
  2333. optoutAmount: 0,
  2334. TaxGroupId: TaxGroupId,
  2335. TaxGroupName: TaxGroupName,
  2336. TaxAmount: TaxAmount,
  2337. TaxRateAmount: 0,
  2338. TaxRate: data.TaxRate,
  2339. TaxPercentage: data.TaxPercentage,
  2340. IsOfferAvailable: false,
  2341. Description: "",
  2342. Discountable: false,
  2343. PiecePrice: 0,
  2344. CompositePrice: 0,
  2345. CompositePiecePrice: 0,
  2346. IsCheckPendingItems: false,
  2347. IsError: false,
  2348. ErrorMsg: "",
  2349. ErrorClass: "text-danger",
  2350. IsTaxError: IsTaxError,
  2351. IsLeverageError: false,
  2352. IsFocAdded: false,
  2353. RefItemIds: RefItemIds,
  2354. RefItemSKUs: RefItemSKUs,
  2355. FocItemIds: "",
  2356. DiscountGroupId: 0,
  2357. IsOfferDiscountApplied: false,
  2358. IsOfferApplied: false,
  2359. AppliedOfferVolume: 0,
  2360. AppliedPlanVolumeId: 0,
  2361. AppliedOfferId: 0,
  2362. OffersCount: data.OffersCount,
  2363. optoutOfferGroupId: 0,
  2364. SuggestedPacks: 0,
  2365. MinPacks: 0,
  2366. AvgPacks: 0,
  2367. InwardOrderPacks: 0,
  2368. OutwardOrderPacks: 0,
  2369. IsMultipleUOMs: data.IsMultipleUOMs,
  2370. UOMSchemaId: data.UOMSchemaId,
  2371. MultipleUOMs: data.MultipleUOMs,
  2372. SelectedUnitId: 1,
  2373. DefaultSize: data.DefaultSize,
  2374. IsBoMAvailable: data.IsBoMAvailable,
  2375. UOMQuantity: 0,
  2376. ProductId: data.ProductId,
  2377. IsWishList: false,
  2378. OldUnitPrice: 0,
  2379. InstalledAppId: data.InstalledAppId,
  2380. });
  2381. if (FromWidget) {
  2382. if (RefItemIds == undefined) {
  2383. RefItemIds = "";
  2384. }
  2385. data.RefItemIds = RefItemIds;
  2386. let html = instance.getItemDesign(data, FromWidget);
  2387. $(".variant-item:last").after(html);
  2388. let elem = $('.variant-addeditem-' + ItemId + "-" + RefItemIds.replace(/,/g, "-"));
  2389. if (elem != undefined && elem.length > 0 && !instance.g_IsCheckOutForm) {
  2390. instance.updateItemsDesign(elem, "FromWidget_FocItem", false, true);
  2391. }
  2392. $(".defaultSelectedCartons").addClass("floating-label-form-group-with-value");
  2393. }
  2394. else {
  2395. if (instance.g_IsCheckOutForm) {
  2396. instance.addCartItem(ItemId, true);
  2397. }
  2398. }
  2399. instance.getTotals(ItemId);
  2400. });
  2401. }
  2402. editFocCartItem(ItemId, Quantity, FromWidget) {
  2403. let instance = this;
  2404. let CartItem = instance.g_CartItems_New.find(x => x.ItemId == ItemId && x.RefItemIds != "");
  2405. let PackCount = CartItem.PackCount;
  2406. let PackSize = CartItem.PackSize;
  2407. let UnitPrice = CartItem.UnitPrice;
  2408. let discType = CartItem.DiscountType;
  2409. let DiscVal = CartItem.DiscountValue;
  2410. let DiscPercent = CartItem.DiscountPercent;
  2411. let discAmt = CartItem.DiscountAmount;
  2412. Quantity = instance.roundOffIgnoreZerosAfterDecimal(Quantity);
  2413. let Packs = Number(Quantity) / (PackCount * PackSize);
  2414. let amount = Number(Quantity) * UnitPrice;
  2415. let assessableAmount = Number(amount);
  2416. let DiscAmount = Number((amount * DiscPercent) / 100) + Number(DiscVal);
  2417. assessableAmount = instance.roundOff(amount - DiscAmount);
  2418. if (amount == 0)
  2419. assessableAmount = 0;
  2420. let BaseQty = Number(PackCount) * Number(PackSize) * Number(Packs);
  2421. let IsCalculateTax = instance.g_IsCalculateTax;
  2422. let AmountWithDiscount = Number(amount) - Number(DiscAmount);
  2423. let TaxAmount = 0;
  2424. let LoadedItem = instance.g_LoadedItems.find(x => x.ItemId == ItemId);
  2425. if (IsCalculateTax) {
  2426. if (LoadedItem.TaxGroupId != 0) {
  2427. for (let p = 0; p < LoadedItem.TaxPercentList.length; p++) {
  2428. let percen = LoadedItem.TaxPercentList[p];
  2429. let tax = assessableAmount * percen.Percentage / 100;
  2430. TaxAmount += tax;
  2431. }
  2432. }
  2433. }
  2434. CartItem.BaseQty = BaseQty;
  2435. CartItem.TaxAmount = TaxAmount;
  2436. CartItem.Packs = Quantity;
  2437. CartItem.Amount = amount;
  2438. CartItem.Quantity = Quantity;
  2439. CartItem.AmountWithDiscount = AmountWithDiscount;
  2440. let Foc_elem = $(".cartitem-" + ItemId + "-" + CartItem.RefItemIds.replace(/,/g, "-"));
  2441. if (FromWidget) {
  2442. Foc_elem = $('.variant-addeditem-' + ItemId + "-" + CartItem.RefItemIds.replace(/,/g, "-"));
  2443. }
  2444. if (Foc_elem.length > 0) {
  2445. instance.updateItemsDesign(Foc_elem, "EditFocItem_IsOfferDiscountApplied", true, true);
  2446. }
  2447. }
  2448. getSelectionStart(o) {
  2449. }
  2450. isNumberKey(evt) {
  2451. if (evt.type == "paste") {
  2452. let pastedData = evt.clipboardData.getData('text');
  2453. let regExp = /[a-zA-Z]/g;
  2454. if (regExp.test(pastedData)) {
  2455. evt.preventDefault();
  2456. return false;
  2457. }
  2458. }
  2459. else {
  2460. if (evt.which != 8 && evt.which != 0 && (evt.which < 48 || evt.which > 57)) {
  2461. return false;
  2462. }
  2463. }
  2464. return true;
  2465. }
  2466. validateFloatKeyPress(el, evt) {
  2467. let instance = this;
  2468. let charCode = (evt.which) ? evt.which : evt.keyCode;
  2469. let number = el.value.split('.');
  2470. if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
  2471. return false;
  2472. }
  2473. if (number.length > 1 && charCode == 46) {
  2474. return false;
  2475. }
  2476. let caratPos = instance.getSelectionStart(el);
  2477. let dotPos = el.value.indexOf(".");
  2478. if (caratPos > dotPos && dotPos > -1 && (number[1].length > 1)) {
  2479. return false;
  2480. }
  2481. return true;
  2482. }
  2483. countDecimals(n) {
  2484. let decimalcount = 0;
  2485. let decimal = n.toString().split(".");
  2486. if (decimal.length == 1) {
  2487. decimalcount = 0;
  2488. }
  2489. else {
  2490. decimalcount = decimal[1].length;
  2491. }
  2492. return decimalcount;
  2493. }
  2494. getIncrementValue(n) {
  2495. let instance = this;
  2496. let incVal = 1;
  2497. let decimalCount = instance.countDecimals(n);
  2498. if (decimalCount == 0) {
  2499. incVal = 1;
  2500. }
  2501. else {
  2502. let dv = "0.";
  2503. for (let i = 0; i < decimalCount - 1; i++) {
  2504. dv += "0";
  2505. }
  2506. dv += "1";
  2507. incVal = Number(dv);
  2508. }
  2509. return incVal;
  2510. }
  2511. checkValidations(ItemId, IsCart) {
  2512. let instance = this;
  2513. let errormessage = "";
  2514. if (ItemId != 0) {
  2515. let element;
  2516. let Item;
  2517. if (IsCart) {
  2518. let CartItem_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == "");
  2519. Item = instance.g_CartItems_New[CartItem_Index];
  2520. element = $(".cartitem-" + ItemId);
  2521. }
  2522. else {
  2523. let SelectedItem_Index = instance.g_SelectedItems.findIndex(x => x.ItemId == ItemId && x.RefItemIds == "");
  2524. Item = instance.g_SelectedItems[SelectedItem_Index];
  2525. element = $(".variant-addeditem-" + ItemId);
  2526. }
  2527. if (Item != undefined) {
  2528. element.find(".tax-error").text("");
  2529. Item.IsError = false;
  2530. let price = Item.UnitPrice;
  2531. let actualprice = Item.ActualPrice;
  2532. let oldunitprice = Item.OldUnitPrice;
  2533. if (price == 0) {
  2534. Item.ErrorMsg += "\n Unit price is zero";
  2535. element.find(".tax-error").text("Unit price is zero").removeClass("text-danger").addClass("text-warning");
  2536. }
  2537. if (price < actualprice) {
  2538. Item.IsError = true;
  2539. element.find(".tax-error").text("Unit price must be greater than " + actualprice + "").addClass("text-danger").removeClass("text-warning");
  2540. Item.ErrorMsg += "\n Unit price must greater than " + actualprice + "";
  2541. }
  2542. if (!instance.g_IsAdmin) {
  2543. if (Item.DiscountPercent > instance.g_LeveragePercent && instance.g_IsLeverageApplied == true) {
  2544. Item.IsLeverageError = true;
  2545. $(element).find("#LeverageErrorTxt").removeClass("hidden");
  2546. $('.empLeverage').text(instance.g_LeveragePercent.toString());
  2547. if ($('.leverage-Warning').hasClass('hidden'))
  2548. $('.leverage-Warning').removeClass('hidden');
  2549. }
  2550. else {
  2551. Item.IsLeverageError = false;
  2552. $(element).find("#LeverageErrorTxt").addClass("hidden");
  2553. if (!$('.leverage-Warning').hasClass('hidden'))
  2554. $('.leverage-Warning').addClass('hidden');
  2555. }
  2556. }
  2557. else {
  2558. Item.IsLeverageError = false;
  2559. }
  2560. let WishListCartItemsWithZeroQuantity = instance.g_CartItems_New.filter(x => x.Quantity == 0 && x.IsWishList == true);
  2561. if (WishListCartItemsWithZeroQuantity.length > 0) {
  2562. $(".cart-Warning").removeClass("hidden");
  2563. $(".cartitem-warning").text("Some of the wishlist items are not added to cart");
  2564. }
  2565. else {
  2566. $(".cart-Warning").addClass("hidden");
  2567. }
  2568. if (Item.IsTaxError && Item.BaseQty != 0) {
  2569. Item.IsError = true;
  2570. Item.ErrorMsg = "Tax not assigned";
  2571. element.find(".tax-error").text("Tax not assigned").addClass("text-danger").removeClass("text-warning");
  2572. }
  2573. if (Item.DiscountPercent > 100) {
  2574. element.find(".tax-error").text("Discount % can't be greater than 100").addClass("text-danger").removeClass("text-warning");
  2575. Item.ErrorMsg += "\n Discount % can't be greater than 100";
  2576. Item.IsError = true;
  2577. }
  2578. }
  2579. }
  2580. instance.checkErrors();
  2581. instance.checkEnablePiece();
  2582. instance.checkEnablePacks();
  2583. return errormessage;
  2584. }
  2585. checkErrors() {
  2586. let instance = this;
  2587. let IsCart = false;
  2588. if (!$("#Items-list").is(":visible")) {
  2589. IsCart = true;
  2590. }
  2591. let Items = [];
  2592. if (IsCart) {
  2593. Items = instance.g_CartItems_New;
  2594. }
  2595. else {
  2596. Items = instance.g_SelectedItems;
  2597. }
  2598. let errors = Items.filter(x => x.IsError == true);
  2599. let leverageErrors = Items.filter(x => x.IsLeverageError == true);
  2600. if (leverageErrors.length == 0) {
  2601. instance.g_IsApprovalRequired = false;
  2602. if (!$('.leverage-Warning').hasClass('hidden'))
  2603. $('.leverage-Warning').addClass('hidden');
  2604. }
  2605. else {
  2606. instance.g_IsApprovalRequired = true;
  2607. $('.empLeverage').text(instance.g_LeveragePercent.toString());
  2608. if ($('.leverage-Warning').hasClass('hidden'))
  2609. $('.leverage-Warning').removeClass('hidden');
  2610. }
  2611. if (errors.length == 0) {
  2612. instance.enableSave();
  2613. }
  2614. else {
  2615. instance.disableSave();
  2616. }
  2617. }
  2618. checkEnablePiece() {
  2619. let instance = this;
  2620. let picesfound = instance.g_CartItems_New.filter(x => x.Pieces > 0);
  2621. if (picesfound.length > 0)
  2622. $('#chk_Pieces').attr('disabled', "true");
  2623. else
  2624. $('#chk_Pieces').removeAttr('disabled');
  2625. }
  2626. checkEnablePacks() {
  2627. let instance = this;
  2628. let packsfound = instance.g_CartItems_New.filter(x => x.Packs > 0);
  2629. if (packsfound.length > 0)
  2630. $('#chk_Packs').attr('disabled', "true");
  2631. else
  2632. $('#chk_Packs').removeAttr('disabled');
  2633. }
  2634. disableSave() {
  2635. $(".btn_Save_Form").find("button").attr("disabled", "disabled").css("cursor", "not-allowed");
  2636. $("#btn_Checkout").attr("disabled", "disabled").css("cursor", "not-allowed");
  2637. return false;
  2638. }
  2639. enableSave() {
  2640. $(".btn_Save_Form").find("button").removeAttr("disabled").css("cursor", "auto");
  2641. $("#btn_Checkout").removeAttr("disabled").css("cursor", "pointer");
  2642. }
  2643. addCartItem(ItemId, IsFocItem = false) {
  2644. let instance = this;
  2645. let CartItems_Index = -1;
  2646. if (IsFocItem) {
  2647. CartItems_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds != "");
  2648. }
  2649. else {
  2650. CartItems_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == "");
  2651. }
  2652. let CartItm = instance.g_CartItems_New[CartItems_Index];
  2653. let html = instance.getItemDesign(CartItm, false, true);
  2654. $("#ulOrder_Cart").append(html);
  2655. let elem = $(".cartitem-" + ItemId);
  2656. let evnt = "EditCartItem";
  2657. if (CartItm.IsFocItem) {
  2658. evnt = "EditFocItem";
  2659. }
  2660. let RefItemIds = CartItm.RefItemIds;
  2661. if (RefItemIds != "") {
  2662. elem = $(".cartitem-" + ItemId + "-" + RefItemIds.replace(/,/g, "-"));
  2663. }
  2664. instance.updateItemsDesign(elem, evnt, true, IsFocItem);
  2665. $("#ulOrder_Cart").find(".chk_PurPlanItem").addClass("hidden");
  2666. instance.allItemEvents(elem);
  2667. }
  2668. deleteCartItems(ItemId, FromWidget = false, RefItemIds = "") {
  2669. let instance = this;
  2670. let itemelement = $('.variant-addeditem-' + ItemId);
  2671. let element_name = "cartitem-";
  2672. let FocItems = instance.g_CartItems_New.filter(x => x.RefItemIds.indexOf(ItemId) != -1);
  2673. for (let f = 0; f < FocItems.length; f++) {
  2674. let Foc_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == FocItems[f].ItemId && x.RefItemIds == FocItems[f].RefItemIds);
  2675. $("." + element_name + FocItems[f].ItemId + "-" + FocItems[f].RefItemIds.replace(/,/g, "-")).remove();
  2676. instance.g_CartItems_New.splice(Foc_Index, 1);
  2677. }
  2678. let deletecartitemindex = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == RefItemIds);
  2679. let deleteitemindex = instance.g_SelectedItems.findIndex(x => x.ItemId == ItemId && x.RefItemIds == RefItemIds);
  2680. if (deleteitemindex != -1) {
  2681. instance.g_SelectedItems.splice(deleteitemindex, 1);
  2682. }
  2683. if (deletecartitemindex != -1) {
  2684. let ItemElem = $('.variant-addeditem-' + ItemId);
  2685. let html = `<div class="d-flex justify-content-center my-2 my-md-0"><button class="AddToCart btn-outline-primary rounded" id="AddToCart_` + ItemId + `" style="border:1px solid"><span class="ml-5"> Add to Cart </span></button></div>`;
  2686. if (ItemElem.length > 0 && instance.g_IsCheckOutForm) {
  2687. $(ItemElem).find(".InventoryTypesTextboxes").html(html);
  2688. instance.allItemEvents(ItemElem);
  2689. }
  2690. $('.variant-addeditem-' + ItemId).find(".txtOrder_ItemCount,.txtOrder_ItemPieceCount").val("");
  2691. $('.variant-addeditem-' + ItemId).find("#DiscountOpenBracket").addClass('hidden');
  2692. $('.variant-addeditem-' + ItemId).find("#QuantityAndDiscountSpan").text('');
  2693. $('.variant-addeditem-' + ItemId).find(".editItemPrice").text(instance.g_CartItems_New[deletecartitemindex].UnitPrice);
  2694. $('.variant-addeditem-' + ItemId).find(".defaultSelectedCartons").removeClass('floating-label-form-group-with-value');
  2695. if (deletecartitemindex != -1) {
  2696. instance.g_CartItems_New.splice(deletecartitemindex, 1);
  2697. if (RefItemIds != "") {
  2698. $("." + element_name + ItemId + "-" + RefItemIds.replace(/,/g, "-")).remove();
  2699. }
  2700. else {
  2701. $("." + element_name + ItemId).remove();
  2702. }
  2703. }
  2704. $(this).parents(".cartitem").remove();
  2705. instance.checkOffers(false, ItemId, "DeleteCartItem");
  2706. if (instance.g_CartItems_New.length == 0) {
  2707. $("#ulOrder_Cart").html('<li id="0" class="cartitem list-group-item col-xs-12 hidden clear no-border"></li> <li class="list-group-item col-xs-12 no-border EmptyCartLi"><strong>Your Shopping Cart is empty.</strong></li>');
  2708. }
  2709. instance.getTotals(ItemId);
  2710. instance.checkErrors();
  2711. }
  2712. }
  2713. bindCartItems() {
  2714. let instance = this;
  2715. $("#txt_SearchItem").val("");
  2716. instance.fileCacheHelper.loadJsFile("apps/transact/managers/orders/ordermanager.js", function () {
  2717. Bizgaze.Apps.Transact.Managers.OrderManager.Instance().getCartItems(instance.g_OrganizationId, instance.g_LobId).then(function (response) {
  2718. instance.g_AddedCartItemIds = "";
  2719. instance.g_IsTaxInclusive = response.result.IsTaxInclusive;
  2720. for (let c = 0; c < response.result.length; c++) {
  2721. let data = response.result[c];
  2722. let DiscountType = 2;
  2723. if (data.DiscountPercent > 0) {
  2724. DiscountType = 1;
  2725. }
  2726. let ItemData = {
  2727. OrderItemId: 0,
  2728. ItemIndex: 0,
  2729. ItemId: data.ItemId,
  2730. ItemName: "",
  2731. Packs: data.Packs,
  2732. Pieces: data.Pieces,
  2733. PriceListId: 0,
  2734. UnitPrice: data.UnitPrice,
  2735. UnitPriceWithOutTax: data.UnitPrice,
  2736. ExpectedPrice: data.UnitPrice,
  2737. ActualPrice: data.UnitPrice,
  2738. PackCount: data.PackCount,
  2739. PackSize: data.PackSize,
  2740. UnitName: "",
  2741. Quantity: data.Quantity,
  2742. SKU: "",
  2743. PartNo: "",
  2744. Amount: 0,
  2745. AmountWithDiscount: 0,
  2746. DiscountPercent: data.DiscountPercent,
  2747. DiscountValue: data.DiscountValue,
  2748. DiscountType: DiscountType,
  2749. DiscountAmount: 0,
  2750. ItemValueAfterDiscount: 0,
  2751. StrTaxPercents: "",
  2752. AvailableQuantity: 0,
  2753. AvailablePacks: 0,
  2754. AvailablePieces: 0,
  2755. TotalAvailablePieces: 0,
  2756. ExchangeDC: false,
  2757. IsAfterTax: false,
  2758. BaseQty: data.Quantity,
  2759. IsFocItem: false,
  2760. optoutAmount: 0,
  2761. TaxGroupId: 0,
  2762. TaxGroupName: "",
  2763. TaxAmount: 0,
  2764. TaxRateAmount: 0,
  2765. TaxRate: 0,
  2766. TaxPercentage: 0,
  2767. IsOfferAvailable: false,
  2768. Description: "",
  2769. Discountable: true,
  2770. PiecePrice: 0,
  2771. CompositePrice: 0,
  2772. CompositePiecePrice: 0,
  2773. IsCheckPendingItems: false,
  2774. IsError: false,
  2775. ErrorMsg: "",
  2776. ErrorClass: "text-danger",
  2777. IsTaxError: false,
  2778. IsLeverageError: false,
  2779. IsFocAdded: false,
  2780. RefItemIds: "",
  2781. RefItemSKUs: "",
  2782. FocItemIds: "",
  2783. DiscountGroupId: 0,
  2784. IsOfferDiscountApplied: false,
  2785. IsOfferApplied: false,
  2786. AppliedOfferVolume: 0,
  2787. AppliedPlanVolumeId: 0,
  2788. AppliedOfferId: 0,
  2789. OffersCount: data.OffersCount,
  2790. optoutOfferGroupId: 0,
  2791. SuggestedPacks: 0,
  2792. MinPacks: 0,
  2793. AvgPacks: 0,
  2794. InwardOrderPacks: 0,
  2795. OutwardOrderPacks: 0,
  2796. IsMultipleUOMs: false,
  2797. UOMSchemaId: 0,
  2798. MultipleUOMs: [],
  2799. SelectedUnitId: 0,
  2800. DefaultSize: 0,
  2801. IsBoMAvailable: false,
  2802. UOMQuantity: 0,
  2803. ProductId: 0,
  2804. IsWishList: data.IsWishList,
  2805. OldUnitPrice: data.UnitPrice,
  2806. InstalledAppId: 0,
  2807. };
  2808. let SelectedItems_Index = instance.g_SelectedItems.findIndex(x => x.ItemId == data.ItemId);
  2809. let CartItems_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == data.ItemId);
  2810. if (SelectedItems_Index == -1) {
  2811. instance.g_SelectedItems.push(ItemData);
  2812. }
  2813. else {
  2814. instance.g_SelectedItems[SelectedItems_Index] = ItemData;
  2815. }
  2816. if (CartItems_Index == -1) {
  2817. instance.g_CartItems_New.push(ItemData);
  2818. }
  2819. else {
  2820. instance.g_CartItems_New[CartItems_Index] = ItemData;
  2821. }
  2822. if (data.ProductId != instance.g_ProductId) {
  2823. instance.g_AddedCartItemIds += data.ItemId + ",";
  2824. }
  2825. }
  2826. instance.loadItems("", true);
  2827. });
  2828. });
  2829. }
  2830. roundOff(n, decimalValue = 2) {
  2831. return Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(n, decimalValue);
  2832. }
  2833. roundOffIgnoreZerosAfterDecimal(n, decimalValue = 2) {
  2834. n = Number(n);
  2835. return Number(n.toFixed(decimalValue));
  2836. }
  2837. getTotals(ItemId = 0, event = "") {
  2838. let instance = this;
  2839. let BranchId = 0;
  2840. if (instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.Sales || instance.g_OrderTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseClaim)
  2841. BranchId = Number($(".txtAutoComplete_billfromaddressid").val());
  2842. else
  2843. BranchId = Number($(".txtAutoComplete_billingaddressid").val());
  2844. $(".hdn_branchid").val(BranchId);
  2845. if (event == "BindCartItems" || event == "LoadItems") {
  2846. ItemId = 0;
  2847. }
  2848. let postdata = {
  2849. OrderItems: instance.g_CartItems_New,
  2850. IsCompositePrice: instance.g_IsEnableCompositePrice,
  2851. IsPiecePrice: instance.g_IsEnablePiecePrice,
  2852. IsTaxInclusive: instance.g_IsTaxInclusive == undefined ? false : instance.g_IsTaxInclusive,
  2853. IsCalculateTax: instance.g_IsCalculateTax == undefined ? false : instance.g_IsCalculateTax,
  2854. OrderTypeId: instance.g_OrderTypeId,
  2855. BranchId: instance.g_BranchId,
  2856. InventoryApplyType: instance.g_InventoryApplyType,
  2857. ContactId: instance.g_OrganizationId,
  2858. LobId: instance.g_LobId,
  2859. ModifiedItem: instance.g_CartItems_New.find(x => x.ItemId == ItemId && x.RefItemIds == ""),
  2860. ItemId: Number(ItemId),
  2861. IsCart: instance.g_IsCheckOutForm
  2862. };
  2863. instance.g_AppliedTaxGroups = new Array();
  2864. Bizgaze.Apps.Transact.Managers.OrderManager.Instance().getTotals(postdata).then(function (response) {
  2865. instance.g_Totals = response.result;
  2866. let res = instance.g_Totals;
  2867. if (instance.roundOff(res.TotalScrapDiscountAmount) > 0)
  2868. $("#div_ScrapDiscount").removeClass("hidden");
  2869. else
  2870. $("#div_ScrapDiscount").addClass("hidden");
  2871. $('#lblSummary_GrossAmount').text(instance.roundOff(res.GrossAmount));
  2872. $('#lblSummary_TotalDiscount').text(instance.roundOff(res.TotalDiscount));
  2873. $('#lblSummary_AssessableTotal').text(instance.roundOff(res.AssessableAmount));
  2874. $('#lblSummary_TaxTotal').text(instance.roundOff(res.TotalTax));
  2875. $('#lblSummary_ScrapDiscountAmount').text('-' + (instance.roundOff(res.TotalScrapDiscountAmount)));
  2876. $('#lblSummary_NetTotal').text(instance.roundOff(res.NetTotal));
  2877. $('#OverallOrderQuantity').text(instance.roundOffIgnoreZerosAfterDecimal(res.TotalQuantity, 2));
  2878. $(".netpacks").text(instance.g_CartItems_New.length);
  2879. if (instance.g_CartItems_New.length == 0) {
  2880. $("#btnDynamicSave").attr("disabled", "true").css("cursor", "not-allowed");
  2881. }
  2882. let WishListCartItemsWithZeroQuantity = instance.g_CartItems_New.filter(x => x.Quantity == 0 && x.IsWishList == true);
  2883. if (WishListCartItemsWithZeroQuantity.length > 0) {
  2884. $(".cart-Warning").removeClass("hidden");
  2885. $(".cartitem-warning").text("Some of the wishlist items are not added to cart");
  2886. }
  2887. else {
  2888. $(".cart-Warning").addClass("hidden");
  2889. }
  2890. let index = instance.g_CartPageIndex * instance.g_PageSize;
  2891. if (instance.g_CartItems_New.length > index) {
  2892. $("#poscheckoutitemsloadmore").addClass("d-md-flex").removeClass("hidden");
  2893. }
  2894. else {
  2895. $("#poscheckoutitemsloadmore").addClass("hidden").removeClass("d-md-flex");
  2896. }
  2897. $("#ulOrder_Cart").find("li").addClass("hidden").removeClass("d-md-flex");
  2898. for (let k = 0; k < index; k++) {
  2899. $($("#ulOrder_Cart").find("li")[k]).removeClass("hidden").addClass("d-md-flex");
  2900. }
  2901. if (instance.g_CartItems_New.length == 0) {
  2902. $("#ulOrder_Cart").find(".cartitem").addClass("hidden");
  2903. $(".divOrderCartQty, .divOrderCart, .divOrderCartItems").addClass("hidden");
  2904. $("#ulOrder_Cart").find(".cartitem").removeClass("d-md-flex");
  2905. }
  2906. else {
  2907. $(".divOrderCartQty, .divOrderCart, .divOrderCartItems").removeClass("hidden");
  2908. }
  2909. });
  2910. }
  2911. getCartItems(OrderId = 0) {
  2912. let instance = this;
  2913. let ItemList = new Array();
  2914. for (let c = 0; c < instance.g_CartItems_New.length; c++) {
  2915. let orderItemIndex = c;
  2916. let CartItem = instance.g_CartItems_New[c];
  2917. let FocItemIds = "";
  2918. instance.g_CartItems_New.filter(z => z.RefItemIds.indexOf(CartItem.ItemId.toString()) > -1).forEach(x => {
  2919. FocItemIds += x.ItemId + "|";
  2920. });
  2921. if (CartItem.IsFocItem || CartItem.Quantity == 0) {
  2922. continue;
  2923. }
  2924. let Quantity = CartItem.Quantity;
  2925. if (CartItem.IsMultipleUOMs && CartItem.UOMQuantity > 0) {
  2926. Quantity = CartItem.UOMQuantity;
  2927. }
  2928. ItemList.push({
  2929. OrderItemId: CartItem.OrderItemId,
  2930. OrderId: OrderId,
  2931. OrderItemIndex: orderItemIndex,
  2932. ItemId: CartItem.ItemId,
  2933. ItemName: CartItem.ItemName,
  2934. UnitPrice: CartItem.UnitPriceWithOutTax,
  2935. PriceListId: CartItem.PriceListId,
  2936. ExpectedPrice: CartItem.ExpectedPrice,
  2937. Quantity: Quantity,
  2938. TaxGroupId: CartItem.TaxGroupId,
  2939. TaxGroupName: CartItem.TaxGroupName,
  2940. TaxTotal: CartItem.TaxAmount,
  2941. Description: CartItem.Description,
  2942. DiscountPercent: CartItem.DiscountPercent,
  2943. DiscountAmount: CartItem.DiscountAmount,
  2944. DiscountValue: CartItem.DiscountValue,
  2945. DiscountGroupId: CartItem.DiscountGroupId,
  2946. RefNo: "",
  2947. RowTotal: CartItem.Amount,
  2948. AvailableQty: CartItem.AvailableQuantity,
  2949. ExchangeDC: CartItem.ExchangeDC,
  2950. HideOnInvoice: false,
  2951. Packs: CartItem.Packs,
  2952. Pieces: CartItem.Pieces,
  2953. IsAfterTax: CartItem.IsAfterTax,
  2954. OptOutAmount: CartItem.optoutAmount,
  2955. OptOutCampaignGroupId: CartItem.optoutOfferGroupId,
  2956. IsFoc: CartItem.IsFocItem,
  2957. OrderFromEstimate: false,
  2958. PriceTypeId: Number(instance.g_PriceTypeId),
  2959. RefItemIds: CartItem.RefItemIds,
  2960. FocItemIds: FocItemIds,
  2961. AlternateUnitId: isNaN(CartItem.SelectedUnitId) ? 0 : CartItem.SelectedUnitId,
  2962. DefaultSize: CartItem.DefaultSize,
  2963. });
  2964. }
  2965. return ItemList;
  2966. }
  2967. loadChildTagsOrProducts(ParentTagId, TagInstalledAppId) {
  2968. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("apps/transact/components/orders/orderfilter.js", function () {
  2969. Bizgaze.Apps.Transact.Components.OrderFilter.Instance().g_Tags = ParentTagId.toString();
  2970. Unibase.Platform.Helpers.NavigationHelper.Instance().loadDetail(ParentTagId, TagInstalledAppId, null, ' ', true);
  2971. });
  2972. }
  2973. loadItemsByProduct(ProductId, ProductInstalledAppId) {
  2974. Unibase.Platform.Helpers.NavigationHelper.Instance().loadDetail(ProductId, ProductInstalledAppId, null, ' ', true);
  2975. }
  2976. loadDetail_UI(Name) {
  2977. let instance = this;
  2978. let poslength = $("#defaultwidgetcallbackfn").length;
  2979. if (poslength > 0) {
  2980. let VisibleContainerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1];
  2981. $("#" + VisibleContainerId).on("remove", function () {
  2982. let ContainerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1];
  2983. var installedappid = Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters["#" + ContainerId].InstalledAppId;
  2984. Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters = Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters["#" + ContainerId].InputParameters;
  2985. Unibase.Themes.Providers.DetailHelper.installedAppId = installedappid;
  2986. var TagId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + Unibase.Themes.Providers.DetailHelper.installedAppId + "_tagid") == undefined ? 0 : Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + Unibase.Themes.Providers.DetailHelper.installedAppId + "_tagid").Value);
  2987. if (TagId > 0) {
  2988. Bizgaze.Apps.Transact.Components.OrderFilter.Instance().g_Tags = TagId.toString();
  2989. }
  2990. });
  2991. $("#" + VisibleContainerId).find('.Mobile-mode .div_details_stages').removeClass('d-block').addClass('d-none');
  2992. let TagNameLink = `<span class="text-dark-60 font-14 font-weight-500 pos-hand-symbol" data-TagNameLink="` + Name + `" onclick='Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().removeBeforeContainers("` + VisibleContainerId + `")'> ` + Name + `</span>`;
  2993. instance.g_TagsLink.push({ "ContainerId": VisibleContainerId, "Link": TagNameLink });
  2994. let Link = instance.getLink();
  2995. $("#" + VisibleContainerId).find(".portletwidget-addeditem").addClass("hidden");
  2996. $("#" + VisibleContainerId).find("#layout-detail-tabs-container").addClass("hidden");
  2997. $("#" + VisibleContainerId).find(".block-on-mobile").removeClass("d-flex").addClass("hidden");
  2998. $("#" + VisibleContainerId).find(".app_defaultwidget").html("<div class='d-flex flex-column'><div><p class='font-18 font-weight-700 text-dark ActiveTagNameLink text-truncate'>" + Name + "</p></div><div class='d-flex flex-row'><div class='font-14 text-dark font-weight-500 d-flex align-items-center flex-row w-md-100 three-dots' style='whitespace:nowrap'>" + Link + "</div><div class='w-md-0 d-md-none d-block three-dots-binding'></div></div></div>");
  2999. $("#" + VisibleContainerId).find(".check-mobile-mode").addClass('align-items-center w-100');
  3000. $("#" + VisibleContainerId).find(".Mobile-mode").addClass('w-90');
  3001. $("#" + VisibleContainerId).find('[data-TagNameLink="' + Name + '" ]').siblings('.blackSlash').last().remove();
  3002. $("#" + VisibleContainerId).find('[data-TagNameLink="' + Name + '" ]').siblings('span:nth-last-child(2)').addClass('back-Active');
  3003. $("#" + VisibleContainerId).find('[data-TagNameLink="' + Name + '" ]').last().remove();
  3004. let element = $("#" + VisibleContainerId).find(".three-dots").css({ 'white-space': 'nowrap', 'overflow': 'hidden' });
  3005. if (element != undefined && element[0] != undefined) {
  3006. if (element[0].offsetWidth > 200) {
  3007. $(element).addClass('w-200p');
  3008. $("#" + VisibleContainerId).find(".three-dots-binding").html('<span class="px-1">...</span>').addClass('w-5');
  3009. }
  3010. }
  3011. }
  3012. }
  3013. loadPlaceOrderDashboardGroup() {
  3014. let instance = this;
  3015. let poslength = $("#defaultwidgetcallbackfn").length;
  3016. if (poslength > 0) {
  3017. instance.fileCacheHelper.loadJsFile("platform/dashboards/managers/dashboardmanager.js", function () {
  3018. Unibase.Platform.Dashboards.Managers.DashboardManager.Instance().getDashboardGroupbyName("Place an Order").then(function (res) {
  3019. $(".liDashboardGroup_" + res.result.DashboardGroupId).click();
  3020. Unibase.Themes.Compact.Components.Nav.Instance().loadDashboardsInDashboard(res.result.DashboardGroupId, 0, true);
  3021. });
  3022. });
  3023. }
  3024. }
  3025. detailClose() {
  3026. let instance = this;
  3027. if (instance.g_TagsLink.length != 0) {
  3028. instance.g_PacksFocus = true;
  3029. instance.g_PiecesFocus = false;
  3030. instance.g_TagsLink.splice(instance.g_TagsLink.length - 1, 1);
  3031. }
  3032. }
  3033. removeBeforeContainers(ContainerId) {
  3034. let instance = this;
  3035. instance.g_PacksFocus = true;
  3036. instance.g_PiecesFocus = false;
  3037. let ModalContainerIds = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds;
  3038. let ModalContainerIndex = ModalContainerIds.findIndex(x => x == ContainerId);
  3039. let len = ModalContainerIds.length;
  3040. for (let i = ModalContainerIndex + 1; i < len; i++) {
  3041. $("#" + ModalContainerIds[i]).remove();
  3042. }
  3043. ModalContainerIds.splice(ModalContainerIndex + 1);
  3044. let TagLinkIndex_1 = instance.g_TagsLink.findIndex(x => x.ContainerId == ContainerId);
  3045. instance.g_TagsLink.splice(TagLinkIndex_1 + 1);
  3046. $("#" + ModalContainerIds[ModalContainerIndex]).removeClass("hidden");
  3047. var installedappid = Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters["#" + ContainerId].InstalledAppId;
  3048. Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters = Unibase.Themes.Providers.Detail_Settings.Instance().DetailParameters["#" + ModalContainerIds[ModalContainerIndex]].InputParameters;
  3049. Unibase.Themes.Providers.DetailHelper.installedAppId = installedappid;
  3050. var TagId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + Unibase.Themes.Providers.DetailHelper.installedAppId + "_tagid") == undefined ? 0 : Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + Unibase.Themes.Providers.DetailHelper.installedAppId + "_tagid").Value);
  3051. if (TagId > 0) {
  3052. Bizgaze.Apps.Transact.Components.OrderFilter.Instance().g_Tags = TagId.toString();
  3053. }
  3054. }
  3055. getLink() {
  3056. let instance = this;
  3057. let Link = "";
  3058. for (let i = 0; i < instance.g_TagsLink.length; i++) {
  3059. if (i == 0) {
  3060. Link = instance.g_TagsLink[i].Link;
  3061. }
  3062. else {
  3063. Link += "<span class='px-2 blackSlash' style='margin-left:-6px'><hr class='border-bottom border-dark border-top-0 m-0 px-2 w-40' style='transform: rotate(115deg);'></span>" + instance.g_TagsLink[i].Link;
  3064. }
  3065. }
  3066. return Link;
  3067. }
  3068. static Instance() {
  3069. if (this.instance === undefined) {
  3070. this.instance = new POSCartItems();
  3071. }
  3072. return this.instance;
  3073. }
  3074. }
  3075. Controls.POSCartItems = POSCartItems;
  3076. })(Controls = Transact.Controls || (Transact.Controls = {}));
  3077. })(Transact = Apps.Transact || (Apps.Transact = {}));
  3078. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  3079. })(Bizgaze || (Bizgaze = {}));