public override Int64 Set(string parametersArr) { List <Item> Lst_ItemsAll = new GenericeDAO <Item>().GetWhere(" isnull(Netsuite_Id,0)=0 and inactive=0 and Item_Type=" + (int)Item_Type.OtherChargeSaleItem).Take(100).ToList(); List <Item> Lst_ItemsUpdate = Lst_ItemsAll.Where(x => x.Netsuite_Id > 0).ToList(); List <Item> Lst_ItemsNew = Lst_ItemsAll.Where(x => x.Netsuite_Id == 0 || x.Netsuite_Id < 0).ToList(); if (Lst_ItemsAll.Count <= 0) { return(0); } // Send order list to netsuite if (Lst_ItemsNew.Count > 0) { com.netsuite.webservices.OtherChargeSaleItem[] ItemArrNew = GenerateNetSuitelst(Lst_ItemsNew); WriteResponseList wrNew = Service(true).addList(ItemArrNew); bool result = wrNew.status.isSuccess; if (result) { //Update database with returned Netsuite ids UpdatedLst(Lst_ItemsNew, wrNew); } } if (Lst_ItemsUpdate.Count > 0) { com.netsuite.webservices.OtherChargeSaleItem[] ItemArrAdd = GenerateNetSuitelst(Lst_ItemsUpdate); // Send order list to netsuite WriteResponseList wr = Service(true).updateList(ItemArrAdd); } return(0); }
private void Generate_Save_NetSuiteLst(List <FoodicsOrder> OrderLstAll, int Subsidiary_Id) { try { int Exe_length = 5; int lstend = Exe_length; Setting objSetting = new GenericeDAO <Setting>().GetWhere("Subsidiary_Netsuite_Id=" + Subsidiary_Id).FirstOrDefault(); if (OrderLstAll.Count > 0) { for (int Index = 0; Index < OrderLstAll.Count; Index += Exe_length) { if (Index + Exe_length >= OrderLstAll.Count) { lstend = OrderLstAll.Count - Index; } List <FoodicsOrder> OrderLst = OrderLstAll.GetRange(Index, lstend); if (OrderLst.Count > 0) { List <PaymentMethod> PaymentMethodLst = new GenericeDAO <PaymentMethod>().GetAll(); List <Invoice> Invoicelst = new List <Invoice>(); List <InvoiceItem> InvoiceItemlst = new List <InvoiceItem>(); List <PaymentMethodEntity> PaymentMethodEntitylst = new List <PaymentMethodEntity>(); foreach (var Foodicsitem in OrderLst) { //List<Invoice> invoiceLst = new GenericeDAO<Invoice>().GetWhere(" Foodics_Id = '" + Foodicsitem.id + "' AND Date = '" + Foodicsitem.business_date.ToString("yyyy-MM-dd") + "'"); List <Invoice> invoiceLst = new GenericeDAO <Invoice>().GetWhere(" Foodics_Id = '" + Foodicsitem.id + "' AND ISNULL(Netsuite_Id,0) > 0"); if (invoiceLst.Count <= 0) { Invoice Netsuiteitem = new Invoice(); //barcode Netsuiteitem.Foodics_Id = Foodicsitem.id; Netsuiteitem.Order_Status = Foodicsitem.status; Netsuiteitem.Subsidiary_Id = Subsidiary_Id; if (Foodicsitem.original_order != null && !string.IsNullOrEmpty(Foodicsitem.original_order.id)) { Netsuiteitem.Original_Foodics_Id = Foodicsitem.original_order.id; } else { Netsuiteitem.Original_Foodics_Id = "0"; } if (Foodicsitem.Customer != null && !string.IsNullOrEmpty(Foodicsitem.Customer.Id)) { Customer obj = new GenericeDAO <Customer>().GetByFoodicsId(Foodicsitem.Customer.Id); if (obj != null && Utility.ConvertToInt(obj.Id) > 0) { Netsuiteitem.Customer_Id = Utility.ConvertToInt(obj.Id); Netsuiteitem.Customer_Netsuite_Id = obj.Netsuite_Id; } } else { Netsuiteitem.Customer_Id = 0; Netsuiteitem.Customer_Netsuite_Id = 0; } if (Foodicsitem.Branch != null && !string.IsNullOrEmpty(Foodicsitem.Branch.id)) { Location obj = new GenericeDAO <Location>().GetByFoodicsId(Foodicsitem.Branch.id); Netsuiteitem.Location_Id = obj.Netsuite_Id; } else { Netsuiteitem.Location_Id = 0; } //Invoice Discount if (Foodicsitem.discount != null && !string.IsNullOrEmpty(Foodicsitem.discount.id)) { Discount obj = new GenericeDAO <Discount>().GetByFoodicsId(Foodicsitem.discount.id); if (obj != null && obj.Netsuite_Id > 0) { Netsuiteitem.Discount_Id = obj.Netsuite_Id; } } //Foodics Source if (Foodicsitem.source > 0) { Netsuiteitem.Source = Enum.GetName(typeof(InvoiceSource), Foodicsitem.source); } //Foodics CreatedBY if (Foodicsitem.creator != null && !string.IsNullOrEmpty(Foodicsitem.creator.id)) { Netsuiteitem.CreatedBy = Foodicsitem.creator.name; } Netsuiteitem.Invoice_Discount_Type = Foodicsitem.discount_type; Netsuiteitem.Total_Discount = (float)Foodicsitem.discount_amount; Netsuiteitem.Date = Foodicsitem.business_date; Netsuiteitem.CreateAt = Foodicsitem.created_at; Netsuiteitem.OpenAt = Foodicsitem.opened_at; Netsuiteitem.CloseAt = Foodicsitem.closed_at; Netsuiteitem.UpdateAt = Foodicsitem.updated_at; Netsuiteitem.Interval_Note = Foodicsitem.kitchen_notes + Foodicsitem.customer_notes; Netsuiteitem.Notes = Netsuiteitem.Interval_Note; Netsuiteitem.Paid = (float)Foodicsitem.total_price; Netsuiteitem.Net_Payable = (float)Foodicsitem.subtotal_price; Netsuiteitem.BarCode = Foodicsitem.reference; Netsuiteitem.Number = Foodicsitem.number.ToString(); //Products foreach (var prodobj in Foodicsitem.Products) { GetProducts(objSetting, InvoiceItemlst, Foodicsitem, prodobj, "", ""); } if (Foodicsitem.combos != null) { foreach (var Comboobj in Foodicsitem.combos) { foreach (var prodobj in Comboobj.Products) { GetProducts(objSetting, InvoiceItemlst, Foodicsitem, prodobj, Comboobj.combo_size.name, Comboobj.combo_size.combo.name); } } } if (Foodicsitem.charges != null) { foreach (var objCharges in Foodicsitem.charges) { Product objproduct = new Product(); Products objProds = new Products(); objProds.quantity = 1; objProds.unit_price = objCharges.amount; objProds.Product = objproduct; objProds.status = 3; foreach (var objCharge in objCharges.charge) { objproduct.id = objCharge.id; objproduct.name = objCharge.name; GetProducts(objSetting, InvoiceItemlst, Foodicsitem, objProds, "", ""); } } } //payment methods foreach (var payobj in Foodicsitem.payments) { PaymentMethod PaymentMethodobj = PaymentMethodLst.Where(x => x.Foodics_Id == payobj.payment_method.id).FirstOrDefault(); PaymentMethodEntity paymethod = new PaymentMethodEntity(); paymethod.Foodics_Id = Foodicsitem.id; paymethod.Entity_Type = 1; paymethod.Amount = (float)payobj.amount; paymethod.Ref = payobj.payment_method.name; paymethod.Notes = payobj.payment_method.name; paymethod.Business_Date = payobj.Business_Date; if (PaymentMethodobj != null && PaymentMethodobj.Netsuite_Id > 0) { paymethod.Payment_Method = PaymentMethodobj.Name_En; paymethod.Payment_Method_Id = PaymentMethodobj.Netsuite_Id; paymethod.Payment_Method_Percentage = PaymentMethodobj.Percentage; } else { paymethod.Payment_Method = "Cash"; paymethod.Payment_Method_Id = 1; paymethod.Payment_Method_Percentage = 0; } paymethod.Payment_Method_Type = 0; paymethod.Payment_Method_Type_Netsuite_Id = 0; PaymentMethodEntitylst.Add(paymethod); } Invoicelst.Add(Netsuiteitem); } } new GenericeDAO <Invoice>().InvoiceDetailsDelete(Invoicelst); new GenericeDAO <Invoice>().ListInsertOnly(Invoicelst); new GenericeDAO <InvoiceItem>().ListInsertOnly(InvoiceItemlst); new GenericeDAO <PaymentMethodEntity>().ListInsertOnly(PaymentMethodEntitylst); //new CustomDAO().InvoiceRelatedUpdate(); } } } } catch (Exception ex) { LogDAO.Integration_Exception(LogIntegrationType.Error, this.GetType().FullName + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Error " + ex.Message); } }
private WriteResponseList CreateCreditMemo(List <Foodics.NetSuite.Shared.Model.Invoice> returnList) { //Define Array of credit Memo Then Loop CreditMemo[] memoList = new CreditMemo[returnList.Count]; CreditMemoItem[] memoitemarr; CreditMemoItem invoiceItemObject; //add return id + return netsuite id to credit memo table, credit memo netsuite id #region Add Credit Memoes to CreditMemo Array for (int i = 0; i < returnList.Count; i++) { Foodics.NetSuite.Shared.Model.Invoice invoiceReturn = returnList[i]; Foodics.NetSuite.Shared.Model.Invoice invoiceoriginal = new GenericeDAO <Foodics.NetSuite.Shared.Model.Invoice>().GetWhere(" Foodics_Id = '" + invoiceReturn.Original_Foodics_Id + "'").FirstOrDefault(); if (invoiceoriginal != null && invoiceoriginal.Netsuite_Id > 0) { Setting objSetting = new GenericeDAO <Setting>().GetWhere("Subsidiary_Netsuite_Id=" + invoiceReturn.Subsidiary_Id).FirstOrDefault(); StringCustomFieldRef FoodicsRef, FoodicsNumb, orderDiscount; CustomFieldRef[] customFieldRefArray; CreditMemo memo = new CreditMemo(); // Return RecordRef returnRef = new RecordRef(); returnRef.internalId = invoiceoriginal.Netsuite_Id.ToString(); returnRef.type = RecordType.invoice; memo.createdFrom = returnRef; //Customer RecordRef entity = new RecordRef(); entity.internalId = invoiceReturn.Customer_Netsuite_Id > 0 ? invoiceReturn.Customer_Netsuite_Id.ToString() : objSetting.Customer_Netsuite_Id.ToString(); entity.type = RecordType.customer; memo.entity = entity; //currency RecordRef currency = new RecordRef(); currency.internalId = objSetting.Currency_Netsuite_Id.ToString(); currency.type = RecordType.currency; memo.currency = currency; //date memo.tranDateSpecified = true; memo.tranDate = TimeZoneInfo.ConvertTimeToUtc(invoiceReturn.Date, TimeZoneInfo.Local); //exchange rate memo.exchangeRate = invoiceReturn.Exchange_Rate; //subsidary RecordRef subsid = new RecordRef(); subsid.internalId = invoiceReturn.Subsidiary_Id.ToString(); subsid.type = RecordType.subsidiary; memo.subsidiary = subsid; #region Item List List <Foodics.NetSuite.Shared.Model.InvoiceItem> itemLst = new GenericeDAO <Foodics.NetSuite.Shared.Model.InvoiceItem>().GetWhere(" ProductStatus =6 and Invoice_Id =" + invoiceReturn.Id + " and isnull(Item_Id,0) >0 "); int DiscountItems = itemLst.Where(x => x.Line_Discount_Amount > 0).Count(); //Define Invoice Items List int totalItems = itemLst.Count + DiscountItems; memoitemarr = new CreditMemoItem[totalItems]; if (itemLst.Count > 0) { CreditMemoItemList crdtmemoitmlst = new CreditMemoItemList(); try { int arr = 0; for (int k = 0; k < totalItems; k++) { Foodics.NetSuite.Shared.Model.InvoiceItem itemDetails = itemLst[arr]; invoiceItemObject = CreateCreditItem(objSetting, itemDetails); memoitemarr[k] = invoiceItemObject; if (itemDetails.Line_Discount_Amount > 0) { float Discount = itemDetails.Line_Discount_Amount; k++; Foodics.NetSuite.Shared.Model.InvoiceItem OtherCharge = new Foodics.NetSuite.Shared.Model.InvoiceItem(); OtherCharge.Item_Id = objSetting.OtherChargeItem_Netsuite_Id; OtherCharge.Amount = Discount * -1; OtherCharge.Quantity = 1; OtherCharge.Item_Type = "OtherChargeResaleItem"; invoiceItemObject = CreateCreditItem(objSetting, OtherCharge); memoitemarr[k] = invoiceItemObject; } arr++; } } catch (Exception ex) { LogDAO.Integration_Exception(LogIntegrationType.Error, this.GetType().FullName + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Error " + ex.Message); } crdtmemoitmlst.item = memoitemarr; memo.itemList = crdtmemoitmlst; } #endregion #region Discount if (invoiceReturn.Total_Discount > 0) { RecordRef discountitem = new RecordRef(); discountitem.type = RecordType.discountItem; memo.discountItem = discountitem; memo.discountRate = (Math.Round((invoiceReturn.Total_Discount / 1.15), 3) * -1).ToString(); if (invoiceReturn.Discount_Id > 0) { discountitem.internalId = invoiceReturn.Discount_Id.ToString(); } else { discountitem.internalId = objSetting.DiscountItem_Netsuite_Id.ToString(); } } else { memo.discountRate = "0"; } if (invoiceReturn.Accounting_Discount_Item != 0) { RecordRef discItem = new RecordRef(); discItem.internalId = invoiceReturn.Accounting_Discount_Item.ToString(); discItem.type = RecordType.discountItem; memo.discountItem = discItem; } #region Custom Attributes orderDiscount = new StringCustomFieldRef(); orderDiscount.scriptId = "custbody_da_invoice_discount"; orderDiscount.value = invoiceReturn.Total_Discount.ToString(); FoodicsRef = new StringCustomFieldRef(); FoodicsRef.scriptId = "custbody_da_foodics_reference"; FoodicsRef.value = invoiceReturn.BarCode.ToString(); FoodicsNumb = new StringCustomFieldRef(); FoodicsNumb.scriptId = "custbody_da_foodics_number"; FoodicsNumb.value = invoiceReturn.Number.ToString(); customFieldRefArray = new CustomFieldRef[3]; customFieldRefArray[0] = orderDiscount; customFieldRefArray[1] = FoodicsRef; customFieldRefArray[2] = FoodicsNumb; memo.customFieldList = customFieldRefArray; #endregion #endregion memoList[i] = memo; } } //Post Memos to Netsuite WriteResponseList memoWR = Service(true).addList(memoList); bool receiptresult = memoWR.status.isSuccess; if (receiptresult) { UpdatedInvoice(returnList, memoWR); } #endregion return(memoWR); }