public SyncResult SyncFromMain(SyncToDepartmentObject syncToDept) { SyncResult result = new SyncResult(); SyncCommonInformation(syncToDept); SyncStockOut(syncToDept); return result; }
public IList<SyncResult> SyncToDepartment(string exportPath, SyncToDepartmentObject syncToDept) { IList<SyncResult> resultList = new List<SyncResult>(); Department department = syncToDept.Department; syncToDept = GetSyncData(syncToDept); #region useless /*SyncToDepartmentObject first = new SyncToDepartmentObject(); first.Department = syncToDept.Department; first.ProductMasterList = syncToDept.ProductMasterList; first.PriceList = syncToDept.PriceList; first.StockOutList = new List<StockOut>();*/ #endregion int countSyncFile = 1; string fileName = exportPath + "\\" + department.DepartmentId + "_" + countSyncFile.ToString() + "_SyncDown_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".ssf"; SyncResult result = new SyncResult(); result.FileName = fileName; result.Status = "Thành công"; resultList.Add(result); //var stream = File.Open(fileName, FileMode.Create); StreamWriter writer = new StreamWriter(fileName, false, Encoding.UTF8); var serializer = new JsonSerializer(); serializer.Serialize(writer, syncToDept); writer.Flush(); writer.Close(); //BinaryFormatter writer = new BinaryFormatter(); //writer.Serialize(stream, syncToDept); /*NxBinaryWriter nxWriter = new NxBinaryWriter(stream); nxWriter.WriteObject(first);*/ //stream.Flush(); //stream.Close(); #region useless // write each stock out to a sync file for avoiding duplicate update /*if (!ObjectUtility.IsNullOrEmpty(syncToDept.StockOutList)) { foreach (StockOut stockOut in syncToDept.StockOutList) { //StockOut _initedstockOut = LazyInitializer.InitializeEntity(stockOut, 0, DaoConstants.MODEL_NAMESPACE, session) countSyncFile += 1; SyncToDepartmentObject soSync = new SyncToDepartmentObject(); first.ProductMasterList = new List<ProductMaster>(); first.PriceList = new List<MainPrice>(); soSync.Department = syncToDept.Department; soSync.StockOutList = new List<StockOut>(); soSync.StockOutList.Add(stockOut); string soFileName = exportPath + "\\" + department.DepartmentId + "_" + countSyncFile.ToString() + "_SyncDown_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".ssf"; SyncResult soResult = new SyncResult(); soResult.FileName = soFileName; soResult.Status = "Thành công"; resultList.Add(soResult); Stream soStream = File.Open(soFileName, FileMode.Create); BinaryFormatter soWriter = new BinaryFormatter(); soWriter.Serialize(soStream, soSync); /*NxBinaryWriter nxSoWriter = new NxBinaryWriter(soStream); nxSoWriter.WriteObject(soSync);♥1♥ //Serializer.Serialize(soStream, soSync); soStream.Flush(); soStream.Close(); } }*/ #endregion return resultList; /*} );*/ }
public SyncToDepartmentObject SyncToDepartment(SyncToDepartmentObject syncToDept) { syncToDept = GetSyncData(syncToDept); return syncToDept; }
private SyncToDepartmentObject GetSyncData(SyncToDepartmentObject syncToDept) { PosDatabase database = PosDatabase.Instance; syncToDept.StockDefinitionStatus = database.ExecuteQueryAll("CRL_STK_DEF_STAT"); string paramMark = ""; IDbParameters dbParameters = database.AdoTemplate.CreateDbParameters(); dbParameters.Add("CREATE_DATE", MySqlDbType.DateTime).Value = DateTime.MinValue; if (syncToDept.DepartmentInfo) { IDbParametersBuilder builder = new DbParametersBuilder(database.DbProvider); //builder.Create().Name("update_date").Type(DbType.DateTime).Value(syncToDept.LastSyncTime); syncToDept.DepartmentList = database.ExecuteQueryAll("CRL_DEPT"); } if (syncToDept.ProductMasterInfo) { syncToDept.ProductType = database.ExecuteQueryAll("CRL_PRD_TYP"); syncToDept.Category = database.ExecuteQueryAll("CRL_CAT"); syncToDept.ProductMaster = database.ExecuteQueryAll("CRL_PRD_MST"); syncToDept.ProductColor = database.ExecuteQueryAll("CRL_EX_PRD_COLOR"); syncToDept.ProductSize = database.ExecuteQueryAll("CRL_EX_PRD_SIZE"); syncToDept.Product = database.ExecuteQueryAll("CRL_PRD"); syncToDept.Prices = database.ExecuteQueryAll("CRL_MN_PRICE"); } else { if (syncToDept.PriceInfo) { syncToDept.Prices = database.ExecuteQueryAll("CRL_MN_PRICE"); } } string whereQuery = " CREATE_DATE>@CREATE_DATE"; syncToDept.StockOut = database.ExecuteQueryAll("CRL_STK_OUT", whereQuery, dbParameters); syncToDept.StockOutDetail = database.ExecuteQueryAll("CRL_STK_OUT_DET", whereQuery,dbParameters); #region Useless /*if (syncToDept.DepartmentInfo) { ObjectCriteria<Department> deptCrit = new ObjectCriteria<Department>(); deptCrit.Add(dpm => dpm.DepartmentId == syncToDept.Department.DepartmentId); syncToDept.Department = (Department)DepartmentDao.FindFirst(deptCrit); } if (syncToDept.ProductMasterInfo) { ProductDao.Execute(delegate(ISession session) { string hql = "from ProductMaster fetch all properties"; IQuery query = session.CreateQuery(hql); syncToDept.ProductMasterList = query.List<ProductMaster>(); return null; }) ; syncToDept.ProductMasterList = ProductMasterDao.FindAll(new LinqCriteria<ProductMaster>()); foreach (ProductMaster product in syncToDept.ProductMasterList) { ProductMasterDao.Fetch(product); } syncToDept.PriceList = MainPriceDao.FindAll(new LinqCriteria<MainPrice>()); foreach (MainPrice mainPrice in syncToDept.PriceList) { MainPriceDao.Fetch(mainPrice); } } else { if (syncToDept.PriceInfo) { syncToDept.PriceList = MainPriceDao.FindAll(new LinqCriteria<MainPrice>()); } } LinqCriteria<StockOut> stockOutCrit = new LinqCriteria<StockOut>(); stockOutCrit.AddCriteria(so => so.CreateDate > DateTime.Now.Subtract(new TimeSpan(3, 0, 0, 0))); stockOutCrit.AddCriteria(so => so.Department.DepartmentId == syncToDept.Department.DepartmentId); stockOutCrit.Fetch(so => so.StockOutDetails); IList<StockOut> stockOuts = StockOutDao.FindAll(stockOutCrit); foreach (StockOut stockOut in stockOuts) { StockOutDao.Fetch(stockOut); } syncToDept.StockOutList = stockOuts; */ #endregion return syncToDept; }
private string SyncStockOut(SyncToDepartmentObject syncToDept) { PosClientDb clientDb = new PosClientDb(); PosDatabase database = PosDatabase.Instance; var deptStkInAdapter = new crl_dept_stk_inTableAdapter(); deptStkInAdapter.ClearBeforeFill = true; deptStkInAdapter.Fill(clientDb.crl_dept_stk_in); var deptStkInDetAdapter = new crl_dept_stk_in_detTableAdapter(); deptStkInDetAdapter.Fill(clientDb.crl_dept_stk_in_det); var deptStkTableAdapter = new crl_dept_stkTableAdapter(); deptStkTableAdapter.Fill(clientDb.crl_dept_stk); var stkOutTableAdapter = new crl_stk_outTableAdapter(); stkOutTableAdapter.Fill(clientDb.crl_stk_out); string template = DateTime.Now.ToString("yyMMdd"); var maxId = (from dr in clientDb.crl_dept_stk_in where dr.STOCK_IN_ID.Contains(template) orderby dr.STOCK_IN_ID descending select dr).Max(r => r.STOCK_IN_ID); string maxStockInId = !ObjectUtility.IsNullOrEmpty(maxId) ? string.Format("{0:0000000000000000}",Int64.Parse(maxId.ToString()) + 1) : string.Format("{0:00000}",syncToDept.Department.DepartmentId) + template + "0001"; Department department = syncToDept.Department; PosClientDb.crl_stk_outDataTable master = clientDb.crl_stk_out; PosClientDb.crl_stk_out_detDataTable details = new PosClientDb.crl_stk_out_detDataTable(); foreach (DataRow dataRow in syncToDept.StockOutDetail.Rows) { PosClientDb.crl_stk_out_detRow row = details.Newcrl_stk_out_detRow(); database.AssignValue(row,dataRow,details.Columns); details.Addcrl_stk_out_detRow(row); } foreach (DataRow stockOut in syncToDept.StockOut.Rows) { long stockOutId = Int64.Parse(stockOut["STOCK_OUT_ID"].ToString()); string filter = "STOCK_OUT_ID = " + stockOut["STOCK_OUT_ID"].ToString(); var currents = from dr in clientDb.crl_stk_out where dr.STOCK_OUT_ID == stockOutId select dr; // if has synchronizes stock out then continue if(currents.Count()>0) continue; // create new department stock in PosClientDb.crl_dept_stk_inRow newRow = clientDb.crl_dept_stk_in.Newcrl_dept_stk_inRow(); newRow.STOCK_IN_ID = maxStockInId; newRow.STOCK_IN_TYPE = 0; newRow.SRC_DEPARTMENT_ID = Int64.Parse(stockOut["DEPARTMENT_ID"].ToString()); newRow.TOTAL_QUANTITY = Int64.Parse(stockOut["TOTAL_QUANTITY"].ToString()); newRow.DEPARTMENT_ID = department.DepartmentId; newRow.STOCK_IN_DATE = DateTime.Now; newRow.CREATE_DATE = DateTime.Now; newRow.UPDATE_DATE = DateTime.Now; newRow.CREATE_ID = "admin"; newRow.UPDATE_ID = "admin"; newRow.DESCRIPTION = stockOut["DESCRIPTION"].ToString(); newRow.EXCLUSIVE_KEY = 1; clientDb.crl_dept_stk_in.Addcrl_dept_stk_inRow(newRow); // create department stock in detail var specificDetails = from dt in details where dt.STOCK_OUT_ID == Int64.Parse(stockOut["STOCK_OUT_ID"].ToString()) select dt; foreach (PosClientDb.crl_stk_out_detRow crlStkOutDetRow in specificDetails) { // insert stock_in PosClientDb.crl_dept_stk_in_detRow detail = clientDb.crl_dept_stk_in_det.Newcrl_dept_stk_in_detRow(); detail.STOCK_IN_ID = maxStockInId; detail.DEPARTMENT_ID = newRow.DEPARTMENT_ID; detail.EXCLUSIVE_KEY = newRow.EXCLUSIVE_KEY; detail.CREATE_DATE = newRow.CREATE_DATE; detail.UPDATE_DATE = newRow.UPDATE_DATE; detail.CREATE_ID = newRow.CREATE_ID; detail.UPDATE_ID = newRow.UPDATE_ID; detail.PRODUCT_ID = crlStkOutDetRow.PRODUCT_ID; detail.PRODUCT_MASTER_ID = crlStkOutDetRow.PRODUCT_MASTER_ID; detail.QUANTITY = crlStkOutDetRow.QUANTITY; clientDb.crl_dept_stk_in_det.Addcrl_dept_stk_in_detRow(detail); // update stock PosClientDb.crl_dept_stkRow stkRow = (from stk in clientDb.crl_dept_stk.AsEnumerable() where stk.PRODUCT_ID.Equals(crlStkOutDetRow.PRODUCT_ID) select stk).FirstOrDefault(); if(stkRow!=null) // if found { stkRow.QUANTITY += (int)crlStkOutDetRow.QUANTITY; } // not found else { PosClientDb.crl_dept_stkRow newStkRow = clientDb.crl_dept_stk.Newcrl_dept_stkRow(); newStkRow.PRODUCT_ID = crlStkOutDetRow.PRODUCT_ID; newStkRow.PRODUCT_MASTER_ID = crlStkOutDetRow.PRODUCT_MASTER_ID; newStkRow.QUANTITY = (int)crlStkOutDetRow.QUANTITY; newStkRow.GOOD_QUANTITY = (int)crlStkOutDetRow.QUANTITY; newStkRow.DEPARTMENT_ID = newRow.DEPARTMENT_ID; newStkRow.EXCLUSIVE_KEY = newRow.EXCLUSIVE_KEY; newStkRow.CREATE_DATE = newRow.CREATE_DATE; newStkRow.UPDATE_DATE = newRow.UPDATE_DATE; newStkRow.CREATE_ID = newRow.CREATE_ID; newStkRow.UPDATE_ID = newRow.UPDATE_ID; clientDb.crl_dept_stk.Addcrl_dept_stkRow(newStkRow); } } maxStockInId = (Int64.Parse(maxStockInId) + 1).ToString(); // update stockOut PosClientDb.crl_stk_outRow row = clientDb.crl_stk_out.Newcrl_stk_outRow(); database.AssignValue(row, stockOut, master.Columns); clientDb.crl_stk_out.Addcrl_stk_outRow(row); stkOutTableAdapter.Update(clientDb.crl_stk_out); } deptStkInAdapter.Update(clientDb.crl_dept_stk_in); deptStkInDetAdapter.Update(clientDb.crl_dept_stk_in_det); deptStkTableAdapter.Update(clientDb.crl_dept_stk); return ""; }
private string SyncCommonInformation(SyncToDepartmentObject syncToDept) { PosDatabase database = PosDatabase.Instance; PosClientDb clientDb = new PosClientDb(); crl_deptTableAdapter crlDeptTableAdapter = new crl_deptTableAdapter(); crlDeptTableAdapter.Fill(clientDb.crl_dept); // sync department information database.ReflectUpdateTable(clientDb.crl_dept, syncToDept.DepartmentList); crlDeptTableAdapter.Update(clientDb.crl_dept); // sync product information crl_catTableAdapter catTableAdapter = new crl_catTableAdapter(); catTableAdapter.Fill(clientDb.crl_cat); database.ReflectUpdateTable(clientDb.crl_cat,syncToDept.Category); catTableAdapter.Update(clientDb.crl_cat); crl_prd_typTableAdapter prdTypTableAdapter = new crl_prd_typTableAdapter(); prdTypTableAdapter.Fill(clientDb.crl_prd_typ); database.ReflectUpdateTable(clientDb.crl_prd_typ, syncToDept.ProductType); prdTypTableAdapter.Update(clientDb.crl_prd_typ); crl_ex_prd_colorTableAdapter crlExPrdColorTableAdapter = new crl_ex_prd_colorTableAdapter(); crlExPrdColorTableAdapter.Fill(clientDb.crl_ex_prd_color); database.ReflectUpdateTable(clientDb.crl_ex_prd_color, syncToDept.ProductColor); crlExPrdColorTableAdapter.Update(clientDb.crl_ex_prd_color); crl_ex_prd_sizeTableAdapter prdSizeTableAdapter = new crl_ex_prd_sizeTableAdapter(); prdSizeTableAdapter.Fill(clientDb.crl_ex_prd_size); database.ReflectUpdateTable(clientDb.crl_ex_prd_size, syncToDept.ProductSize); prdSizeTableAdapter.Update(clientDb.crl_ex_prd_size); crl_prd_mstTableAdapter crlPrdMstTableAdapter = new crl_prd_mstTableAdapter(); crlPrdMstTableAdapter.Fill(clientDb.crl_prd_mst); database.ReflectUpdateTable(clientDb.crl_prd_mst, syncToDept.ProductMaster); crlPrdMstTableAdapter.Update(clientDb.crl_prd_mst); crl_prdTableAdapter crlPrdTableAdapter = new crl_prdTableAdapter(); crlPrdTableAdapter.Fill(clientDb.crl_prd); database.ReflectUpdateTable(clientDb.crl_prd, syncToDept.Product); crlPrdTableAdapter.Update(clientDb.crl_prd); // sync price information crl_mn_priceTableAdapter crlMnPriceTableAdapter = new crl_mn_priceTableAdapter(); crlMnPriceTableAdapter.Fill(clientDb.crl_mn_price); database.ReflectUpdateTable(clientDb.crl_mn_price, syncToDept.Prices); crlMnPriceTableAdapter.Update(clientDb.crl_mn_price); var crl_stk_def_statAdapter = new crl_stk_def_statTableAdapter(); crl_stk_def_statAdapter.Fill(clientDb.crl_stk_def_stat); database.ReflectUpdateTable(clientDb.crl_stk_def_stat,syncToDept.StockDefinitionStatus); crl_stk_def_statAdapter.Update(clientDb.crl_stk_def_stat); return ""; }
public object SyncToDepartment(SyncToDepartmentObject toDepartmentObject) { SystemConfig config = SystemConfig.Instance; IList departmentUsbList = ClientUtility.GetUSBDrives(); if (departmentUsbList.Count == 0) { MessageBox.Show("Không thể tìm thấy USB đồng bộ nào"); return null; } if (departmentUsbList.Count > 1) { MessageBox.Show("Có nhiều hơn một USB đồng bộ, xin hãy rút bớt !"); return null; } foreach (var POSSyncDrive in departmentUsbList) { //var exportPath = (string)configurationAppSettings.GetValue("SyncExportPath", typeof(String)); var configExportPath = POSSyncDrive + config.SyncExportPath; if (string.IsNullOrEmpty(configExportPath) || !Directory.Exists(configExportPath)) { MessageBox.Show("Không thể tìm thấy đường dẫn đến thư mục " + configExportPath + "!Hãy kiễm tra file cấu hình phần SyncExportPath"); return -1; } resultList = new ArrayList(); //toDepartmentObject = SyncLogic.SyncToDepartment(toDepartmentObject); Department department = toDepartmentObject.Department; var exportPath = ClientUtility.EnsureSyncPath(configExportPath, department); int countSyncFile = 1; SyncLogic.SyncToDepartment(exportPath, toDepartmentObject); MessageBox.Show("Đồng bộ hoàn tất !"); } return 0; }
public void SyncToDepartment() { SyncToDepartmentObject obj = new SyncToDepartmentObject(); obj.Department = SelectedDepartment; obj.DepartmentInfo = DepartmentInfo; obj.ProductMasterInfo = ProductMasterInfo; obj.PriceInfo = PriceInfo; IoC.Get<INormalLoadViewModel>().StartLoading(); BackgroundTask _backgroundTask = null; _backgroundTask = new BackgroundTask(() => SyncToDepartment(obj)); _backgroundTask.Completed += (s, e) => SyncToDepartmentCompleted(s, e); _backgroundTask.Start(obj); }