public async Task <IActionResult> PostTransaction([FromBody] HOTransaction transactionApi)
        {
            APIResponse response = new APIResponse();

            try
            {
                Store store = _context.Store.Where(c => c.Code == transactionApi.storeCode).First();
                Models.InventoryTransaction transaction = new Models.InventoryTransaction();
                transaction.TransactionId       = transactionApi.transactionId;
                transaction.StoreCode           = transactionApi.storeCode;
                transaction.Remarks             = "";
                transaction.StoreName           = store.Name;
                transaction.TransactionTypeId   = RetailEnum.HOTransaction;
                transaction.TransactionTypeName = "HOTransaction";
                transaction.WarehouseOriginal   = store.WarehouseId;
                transaction.RequestDeliveryDate = DateTime.Now;
                transaction.TransactionDate     = DateTime.Now;

                transaction.Status   = "Pending";
                transaction.StatusId = RetailEnum.doStatusPending;

                try
                {
                    transaction.EmployeeCode = transactionApi.employeeId;
                    transaction.EmployeeName = transactionApi.employeeName;
                }
                catch { }


                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                //log record
                LogRecord log = new LogRecord();
                log.TimeStamp = DateTime.Now;
                log.Tag       = "HO Transaction";
                log.Message   = JsonConvert.SerializeObject(transactionApi);
                _context.LogRecord.Add(log);
                _context.InventoryTransaction.Add(transaction);
                await _context.SaveChangesAsync();

                /*
                 * //save Lines
                 * for (int i = 0; i < transactionApi.hoTransactionLines.Count; i++)
                 * {
                 *  Models.InventoryTransactionLines transactionLines = new Models.InventoryTransactionLines();
                 *  transactionLines.InventoryTransactionId = transaction.Id;
                 *  transactionLines.ArticleId = transactionApi.hoTransactionLines[i].article.articleId;
                 *  transactionLines.ArticleName = transactionApi.hoTransactionLines[i].article.articleName;
                 *  transactionLines.Qty = transactionApi.hoTransactionLines[i].quantity;
                 *  _context.InventoryTransactionLines.Add(transactionLines);
                 *  await _context.SaveChangesAsync();
                 * }
                 */
                response.code    = "1";
                response.message = "Sucess Add Data";

                //   WebAPIInforController.InforAPIController inforAPIController = new WebAPIInforController.InforAPIController(_context);
                //  inforAPIController.postRequestOrder(transactionApi, transaction.Id).Wait();
                this.sequenceNumber(transactionApi);
            }

            catch (Exception ex)
            {
                response.code    = "0";
                response.message = ex.ToString();
            }
            return(Ok(response));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Update([FromBody] DeliveryOrder transactionApi)
        {
            //add for log
            try
            {
                LogRecord log = new LogRecord();
                log.TimeStamp = DateTime.Now;

                log.Tag = "Pre Confirm DO";

                log.Message       = JsonConvert.SerializeObject(transactionApi);
                log.TransactionId = transactionApi.deliveryOrderId;
                _context.LogRecord.Add(log);
                //   _context.SaveChanges();
            }
            catch
            {
            }
            //end log

            APIResponse response = new APIResponse();

            try
            {
                bool statusConfirmed = _context.InventoryTransaction.Any(c => c.TransactionId == transactionApi.deliveryOrderId &&
                                                                         c.Status == "Confirmed");
                if (statusConfirmed)
                {
                    response.code    = "0";
                    response.message = "DO has been confirmed";
                    return(Ok(response));
                }

                bool exsist = await _context.InventoryTransactionLines.AnyAsync(x => x.Urridn == transactionApi.deliveryOrderId);

                if (!exsist)
                {
                    Models.InventoryTransaction transaction = await _context.InventoryTransaction.Where(c => c.TransactionId == transactionApi.deliveryOrderId).FirstAsync();

                    transaction.Status       = "Confirmed";
                    transaction.StatusId     = RetailEnum.doStatusConfirmed;
                    transaction.Id           = transaction.Id;
                    transaction.SyncDate     = DateTime.Now;
                    transaction.EmployeeCode = transactionApi.employeeId;
                    transaction.EmployeeName = transactionApi.employeeName;

                    try
                    {
                        transaction.RequestDeliveryDate = DateTime.ParseExact(transactionApi.deliveryTime, "yyyy-MM-dd", CultureInfo.InvariantCulture); // MPOS
                    }
                    catch
                    {
                        //POS
                        transaction.RequestDeliveryDate = DateTime.Now;
                    }
                    //log record

                    if (!ModelState.IsValid)
                    {
                        return(BadRequest(ModelState));
                    }
                    _context.InventoryTransaction.Update(transaction);
                    _context.SaveChanges();


                    List <Article> listar = new List <Article>();
                    //save Lines
                    for (int i = 0; i < transactionApi.deliveryOrderLines.Count; i++)
                    {
                        var artikelaidifk = _context.Item.Where(x => x.Id == transactionApi.deliveryOrderLines[i].articleIdFk).First().ItemIdAlias;
                        var itemanme      = _context.Item.Where(x => x.Id == transactionApi.deliveryOrderLines[i].articleIdFk).First().Name;
                        //add  and remarkby frank
                        // 7 april 2019
                        // untuk case yang double lines tidak ada packing number, referencenya beredsarkan id uniq di DO lins

                        /*Models.InventoryTransactionLines transactionLines = await _context.InventoryTransactionLines.Where(c => c.InventoryTransactionId == transaction.Id &&
                         * c.ArticleId == artikelaidifk
                         * && c.PackingNumber == transactionApi.deliveryOrderLines[i].packingNumber).FirstAsync();
                         */
                        Models.InventoryTransactionLines transactionLines = _context.InventoryTransactionLines.Find(transactionApi.deliveryOrderLines[i].id);
                        //end of add end remark by frank

                        transactionLines.ArticleName = itemanme;
                        //reamakr by frank 1 oktobr
                        // coa request
                        //   bool check = listar.Any(c => c.id == transactionApi.deliveryOrderLines[i].articleIdFk && c.articleIdAlias == transactionApi.deliveryOrderLines[i].packingNumber);
                        //   if (check)
                        //   {
                        //       transactionLines.RecieveQty = 0;
                        //   }
                        //   else
                        //  {
                        transactionLines.RecieveQty = transactionApi.deliveryOrderLines[i].qtyReceive;
                        //  }
                        //end of remark 1 oktoer


                        Article dupli = new Article
                        {
                            id             = transactionApi.deliveryOrderLines[i].articleIdFk,
                            articleIdAlias = transactionApi.deliveryOrderLines[i].packingNumber
                        };
                        listar.Add(dupli);

                        _context.InventoryTransactionLines.Update(transactionLines);
                        _context.SaveChanges();
                    }

                    response.code    = "1";
                    response.message = "Sucess Add Data";
                    DateTime maret20 = DateTime.ParseExact("2019-02-28", "yyyy-MM-dd", CultureInfo.InvariantCulture);
                    if (transaction.TransactionDate >= maret20)
                    {
                        if (transaction.InforBypass == true)
                        {
                        }
                        else
                        {
                            //   WebAPIInforController.InforAPIController inforAPIController = new WebAPIInforController.InforAPIController(_context);
                            //   inforAPIController.RecieveRequestOrder(transactionApi, transaction.Id).Wait();
                        }

                        if (transaction.StatusId == RetailEnum.doStatusConfirmed)
                        {
                            this.insertAndCalculateDO(transactionApi);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                response.code    = "0";
                response.message = ex.ToString();
            }

            return(Ok(response));
        }
 public static InventoryTransaction From(Models.InventoryTransaction source)
 {
     return(new InventoryTransaction().PopulateWith(source));
 }
Ejemplo n.º 4
0
        public async Task <IActionResult> PostTransaction([FromBody] MutasiOrder transactionApi)
        {
            APIResponse response = new APIResponse();

            try
            {
                if (transactionApi.mutasiFromWarehouse == "" || transactionApi.mutasiFromWarehouse == null || transactionApi.mutasiToWarehouse == "" || transactionApi.mutasiFromWarehouse == null)
                {
                    response.code    = "0";
                    response.message = "No Warehouse Origin / Destination, Make sure to fill it.";
                    return(BadRequest(response));
                }
                bool exist = _context.InventoryTransaction.Any(c => c.TransactionId == transactionApi.mutasiOrderId);
                if (exist == false)
                {
                    LogRecord log = new LogRecord();
                    log.TimeStamp     = DateTime.Now;
                    log.Tag           = "Mutasi Order";
                    log.Message       = JsonConvert.SerializeObject(transactionApi);
                    log.TransactionId = transactionApi.mutasiOrderId;
                    await _context.LogRecord.AddAsync(log);

                    await _context.SaveChangesAsync();

                    DateTime asd;// = DateTime.Now;
                    try
                    {
                        // transaction.RequestDeliveryDate = DateTime.ParseExact(transactionApi.timeStamp, "MMM dd, yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
                        asd = DateTime.ParseExact(transactionApi.date, "yyyy-MM-dd", CultureInfo.InvariantCulture);
                    }
                    catch
                    {
                        asd = DateTime.ParseExact(transactionApi.date, "yyyy-MM-dd", CultureInfo.InvariantCulture);
                    }
                    DateTime maret10 = DateTime.ParseExact("2019-03-10", "yyyy-MM-dd", CultureInfo.InvariantCulture);
                    if (maret10 >= asd)
                    {
                        response.code    = "1";
                        response.message = "Sucess Add Data";
                        return(Ok(response));
                    }

                    Store store = _context.Store.Where(c => c.Code == transactionApi.storeCode).First();
                    Models.InventoryTransaction transaction = new Models.InventoryTransaction();
                    transaction.TransactionId       = transactionApi.mutasiOrderId;
                    transaction.StoreCode           = transactionApi.storeCode;
                    transaction.Remarks             = transactionApi.remarks;
                    transaction.StoreName           = store.Name;
                    transaction.TransactionTypeId   = RetailEnum.mutasiTransaction;
                    transaction.TransactionTypeName = "Mutasi";
                    transaction.Status               = null;
                    transaction.StatusId             = null;
                    transaction.WarehouseOriginal    = transactionApi.mutasiFromWarehouse;
                    transaction.WarehouseDestination = transactionApi.mutasiToWarehouse;
                    transaction.RequestDeliveryDate  = DateTime.Now;
                    transaction.Sjlama               = transactionApi.oldSJ;
                    transaction.TransactionDate      = DateTime.Now;//DateTime.ParseExact(transactionApi.date, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                    try
                    {
                        transaction.TransactionDate = DateTime.Parse(transactionApi.date);
                    }
                    catch
                    {
                    }
                    try
                    {
                        transaction.RequestDeliveryDate = DateTime.Parse(transactionApi.requestDeliveryDate);
                    }
                    catch
                    {
                    }
                    transaction.TotalQty = transactionApi.totalQty;
                    transaction.Remarks  = "";
                    try
                    {
                        transaction.EmployeeCode = transactionApi.employeeId;
                        transaction.EmployeeName = transactionApi.employeeName;
                    }
                    catch
                    {
                    }
                    //add by frank for mutasi matrix
                    try
                    {
                        Store storeMaster = _context.Store.Where(c => c.Code == transactionApi.mutasiFromWarehouse).First();
                        List <MutasiApproverMatrix> mutasiApproverMatrixs = _context.MutasiApproverMatrix.Where(c => c.StoreMatrix == storeMaster.Id).ToList();
                        MutasiApproverMatrix        ms = mutasiApproverMatrixs.Where(c => c.StoreMatrix == storeMaster.Id).First();
                        if (transactionApi.mutasiType == 1)
                        {
                            transaction.EmployeeToApprove = ms.ApproverCity;
                        }
                        else if (transactionApi.mutasiType == 2)
                        {
                            transaction.EmployeeToApprove = ms.ApproverRegional;
                        }
                        else
                        {
                            transaction.EmployeeToApprove = ms.ApproverNational;
                        }
                    }
                    catch
                    {
                        transaction.EmployeeToApprove = "admin123";
                    }

                    if (!ModelState.IsValid)
                    {
                        return(BadRequest(ModelState));
                    }
                    //log record

                    _context.InventoryTransaction.Add(transaction);
                    _context.SaveChanges();

                    //save Lines
                    for (int i = 0; i < transactionApi.mutasiOrderLines.Count; i++)
                    {
                        Models.InventoryTransactionLines transactionLines = new Models.InventoryTransactionLines();
                        transactionLines.InventoryTransactionId = transaction.Id;
                        transactionLines.ArticleId   = transactionApi.mutasiOrderLines[i].article.articleIdAlias;
                        transactionLines.ArticleName = transactionApi.mutasiOrderLines[i].article.articleName;
                        transactionLines.Qty         = transactionApi.mutasiOrderLines[i].quantity;
                        try
                        {
                            transactionLines.ValueSalesPrice = transactionLines.Qty * _context.PriceList.Where(c => c.ItemId == transactionLines.ArticleId).First().SalesPrice;
                        }
                        catch
                        {
                            transactionLines.ValueSalesPrice = 0;
                        }
                        _context.InventoryTransactionLines.Add(transactionLines);
                        _context.SaveChanges();
                    }

                    response.code    = "1";
                    response.message = "Sucess Add Data";
                    //Duplace karena di POS sudah kurang, jika rect qty akan bertambah, jika approve tidak perlu kalkulaso
                    this.insertAndCalculateDO(transactionApi);
                    this.sequenceNumber(transactionApi);
                }
                else
                {
                    response.code    = "1";
                    response.message = "Transaction Already Exist";
                    LogRecord log = new LogRecord();
                    log.TimeStamp = DateTime.Now;
                    log.Tag       = "Mutasi Order";
                    log.Message   = transactionApi.mutasiOrderId + "Aleader Exist";
                    _context.LogRecord.Add(log);
                    _context.SaveChanges();
                }
            }

            catch (Exception ex)
            {
                response.code    = "1";
                response.message = ex.ToString();
            }


            // await _context.SaveChangesAsync();
            return(Ok(response));
            //     return CreatedAtAction("GetTransaction", new { id = transaction.Id }, transaction);
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> PostTransaction([FromBody] ReturnOrder transactionApi)
        {
            APIResponse response = new APIResponse();
            bool        exist    = _context.InventoryTransaction.Any(c => c.TransactionId == transactionApi.returnOrderId);

            if (exist == false)
            {
                LogRecord log = new LogRecord();
                log.TimeStamp     = DateTime.Now;
                log.Tag           = "Return Order";
                log.Message       = JsonConvert.SerializeObject(transactionApi);
                log.TransactionId = transactionApi.returnOrderId;
                _context.LogRecord.Add(log);
                _context.SaveChanges();


                DateTime asd;
                try
                {
                    // transaction.RequestDeliveryDate = DateTime.ParseExact(transactionApi.timeStamp, "MMM dd, yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
                    asd = DateTime.ParseExact(transactionApi.date, "yyyy-MM-dd", CultureInfo.InvariantCulture);
                }
                catch
                {
                    asd = DateTime.ParseExact(transactionApi.date, "yyyy-MM-dd", CultureInfo.InvariantCulture);
                }
                DateTime maret10 = DateTime.ParseExact("2019-03-10", "yyyy-MM-dd", CultureInfo.InvariantCulture);
                if (maret10 >= asd)
                {
                    response.code    = "1";
                    response.message = "Sucess Add Data";
                    return(Ok(response));
                }


                Store store = _context.Store.Where(c => c.Code == transactionApi.storeCode).First();
                Models.InventoryTransaction transaction = new Models.InventoryTransaction();

                transaction.TransactionId        = transactionApi.returnOrderId;
                transaction.StoreCode            = transactionApi.storeCode;
                transaction.Remarks              = "-";
                transaction.StoreName            = store.Name;
                transaction.TransactionTypeId    = RetailEnum.returnTransaction;
                transaction.TransactionTypeName  = "Return";
                transaction.WarehouseOriginal    = store.WarehouseId;
                transaction.WarehouseDestination = "210";
                transaction.RequestDeliveryDate  = DateTime.Now;
                // transaction.SJlama = transactionApi.oldSJ;
                try
                {
                    transaction.TransactionDate = DateTime.Parse(transactionApi.date);
                }
                catch
                {
                }

                //DateTime.ParseExact(transactionApi.date, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                transaction.TotalQty = transactionApi.totalQty;
                transaction.Remarks  = transactionApi.remark;

                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                _context.InventoryTransaction.Add(transaction);
                await _context.SaveChangesAsync();

                // this.insertInventoryReturnOrder(transactionApi).Wait();
                //save Lines
                for (int i = 0; i < transactionApi.returnOrderLines.Count; i++)
                {
                    Models.InventoryTransactionLines transactionLines = new Models.InventoryTransactionLines();
                    transactionLines.InventoryTransactionId = transaction.Id;
                    transactionLines.ArticleId   = transactionApi.returnOrderLines[i].article.articleIdAlias;
                    transactionLines.ArticleName = transactionApi.returnOrderLines[i].article.articleName;
                    transactionLines.Qty         = transactionApi.returnOrderLines[i].quantity;
                    // transactionLines.Amount = transactionApi.transactionLines[i].subtotal;
                    _context.InventoryTransactionLines.Add(transactionLines);
                    await _context.SaveChangesAsync();
                }

                response.code    = "1";
                response.message = "Sucess Add Data";
                this.sequenceNumber(transactionApi);
            }
            else
            {
                response.code    = "0";
                response.message = "Transacion Number Already Exist";
                LogRecord log = new LogRecord();
                log.TimeStamp = DateTime.Now;
                log.Tag       = "Return Order";
                log.Message   = transactionApi.returnOrderId + "Aleader Exist";
                _context.LogRecord.Add(log);
                _context.SaveChanges();
            }
            return(Ok(response));
            //     return CreatedAtAction("GetTransaction", new { id = transaction.Id }, transaction);
        }
        public async Task <IActionResult> PostTransaction([FromBody] RequestOrder transactionApi)
        {
            APIResponse response = new APIResponse();

            try
            {
                Store store = _context.Store.Where(c => c.Code == transactionApi.storeCode).First();
                Models.InventoryTransaction transaction = new Models.InventoryTransaction();
                transaction.TransactionId       = transactionApi.requestOrderId;
                transaction.StoreCode           = transactionApi.storeCode;
                transaction.Remarks             = "";
                transaction.StoreName           = store.Name;
                transaction.TransactionTypeId   = RetailEnum.requestTransaction;
                transaction.TransactionTypeName = "Request";
                transaction.WarehouseOriginal   = store.WarehouseId;
                transaction.RequestDeliveryDate = DateTime.Now;
                transaction.TransactionDate     = DateTime.Now;//DateTime.ParseExact(transactionApi.date, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                transaction.TotalQty            = transactionApi.totalQty;
                transaction.Remarks             = "";
                transaction.Sjlama = transactionApi.oldSJ;
                try
                {
                    transaction.EmployeeCode = transactionApi.employeeId;
                    transaction.EmployeeName = transactionApi.employeeName;
                }
                catch { }


                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                //log record
                LogRecord log = new LogRecord();
                log.TimeStamp = DateTime.Now;
                log.Tag       = "Request Order";
                log.Message   = JsonConvert.SerializeObject(transactionApi);
                _context.LogRecord.Add(log);
                _context.InventoryTransaction.Add(transaction);
                await _context.SaveChangesAsync();

                //save Lines
                for (int i = 0; i < transactionApi.requestOrderLines.Count; i++)
                {
                    Models.InventoryTransactionLines transactionLines = new Models.InventoryTransactionLines();
                    transactionLines.InventoryTransactionId = transaction.Id;
                    transactionLines.ArticleId   = transactionApi.requestOrderLines[i].article.articleId;
                    transactionLines.ArticleName = transactionApi.requestOrderLines[i].article.articleName;
                    // transactionLines.price = transactionApi.transactionLines[i].price;
                    transactionLines.Qty = transactionApi.requestOrderLines[i].quantity;
                    // transactionLines.Amount = transactionApi.transactionLines[i].subtotal;
                    _context.InventoryTransactionLines.Add(transactionLines);
                    await _context.SaveChangesAsync();
                }
                response.code    = "1";
                response.message = "Sucess Add Data";
                // this.insertAndCalculateRO(transactionApi).Wait();

                WebAPIInforController.InforAPIController inforAPIController = new WebAPIInforController.InforAPIController(_context);
                inforAPIController.postRequestOrder(transactionApi, transaction.Id).Wait();
                this.sequenceNumber(transactionApi);
            }

            catch (Exception ex)
            {
                response.code    = "0";
                response.message = ex.ToString();
            }
            return(Ok(response));
            //     return CreatedAtAction("GetTransaction", new { id = transaction.Id }, transaction);
        }