public async Task <IActionResult> Gendata(string date1, string date2) { /*Check Session */ var page = "251"; var typeofuser = ""; var PermisionAction = ""; // CheckSession if (string.IsNullOrEmpty(HttpContext.Session.GetString("Username"))) { Alert("คุณไม่มีสิทธิ์ใช้งานหน้าดังกล่าว", NotificationType.error); return(RedirectToAction("Index", "Home")); } else { typeofuser = HttpContext.Session.GetString("TypeOfUserId"); PermisionAction = HttpContext.Session.GetString("PermisionAction"); if (PermisionHelper.CheckPermision(typeofuser, PermisionAction, page) == false) { Alert("คุณไม่มีสิทธิ์ใช้งานหน้าดังกล่าว", NotificationType.error); return(RedirectToAction("Index", "Home")); } } /*Check Session */ var StartDate = Convert.ToDateTime(date1.Substring(6, 4) + "-" + date1.Substring(3, 2) + "-" + date1.Substring(0, 2) + " 00:00:00"); var EndDate1 = Convert.ToDateTime(date2.Substring(6, 4) + "-" + date2.Substring(3, 2) + "-" + date2.Substring(0, 2) + " 00:00:00"); TimeSpan difference; var EndDate = EndDate1; IActionResult response = Unauthorized(); //var StraightLineAll = _context.FixAssetStraightLines.ToList(); var StraightLineAll = _context.FixAssetStraightLines.ToList(); FixAssetStraightLine Straight; List <FixAssetStraightLine> Straights = new List <FixAssetStraightLine>(); var querydata = "SELECT " + "ROW_NUMBER() OVER (ORDER BY dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_]) AS ID, " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_] as FANO, " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Description, " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Date] as StartDate, " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Group] AS FAPostingGroup, " + "sum(dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Amount) as Amount, " + "sum(dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Qty_) as Quantity " + "FROM " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] " + "LEFT JOIN dbo." + Environment.GetEnvironmentVariable("Company") + "Fixed Asset] ON dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_] = dbo." + Environment.GetEnvironmentVariable("Company") + "Fixed Asset].No_ " + "WHERE dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Type]=0 and [Reason Code] in('AC DISP','AC DONATIO','AC LOST') " + "GROUP BY " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_], " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Description, " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Date], " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Group] " + "order by dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_] "; var FixAssetMisses = await _navcontext.FixAssetMisses.FromSqlRaw(querydata).ToListAsync(); foreach (var std in StraightLineAll) { Straight = new FixAssetStraightLine(); Straight = std; EndDate = EndDate1; var StartDate1 = StartDate; var FixAssetData = FixAssetMisses.Where(p => p.FANO == std.FANO).ToList(); if (FixAssetData.Count > 0) { Straight.StraightLine = 0; var amount = Math.Round(std.Amount, 2); var endprice = Math.Round(std.PriceEnd * -1, 2); decimal total = Math.Round(0.00M, 2); var CutQuantity = 0M; var CutAmount = 0M; if (std.EndDate <= StartDate) //วันที่สิ้นสุด น้อยกว่าเท่ากับ วันที่ เริ่ม { } else if (std.StartDate >= EndDate) //วันที่เริ่ม มากกว่าเท่ากับ วันที่สิ้นสุด { } else { //เช็คว่ามีรายการเกิดก่อน วันหรือไม่เพื่อลดค่า amount และ Quantity CutQuantity = FixAssetData.Where(p => p.StartDate < StartDate).Sum(a => a.Quantity); CutAmount = FixAssetData.Where(p => p.StartDate < StartDate).Sum(a => a.Amount); amount = amount + CutAmount; endprice = endprice + CutQuantity; if (amount <= 0) { } else { //เช็คตั้งแต่ Start ถึง End มีรายการหรือไม่ คิดค่าใช้จ่ายระหว่างทาง var checkcurrent = FixAssetData.Where(p => p.StartDate >= StartDate && p.StartDate <= EndDate).ToList(); if (checkcurrent.Count > 0) { for (var i = 0; i < checkcurrent.Count; i++) { if (i == 0 && (checkcurrent.Count != i + 1)) { if (std.StartDate >= StartDate1 && std.EndDate >= EndDate) //กรณีทรัพย์สินเกิดหลังวันที่กรองข้อมูล { StartDate1 = std.StartDate; difference = checkcurrent[i].StartDate.AddDays(-1) - StartDate1; } else if (std.StartDate <= StartDate1 && std.EndDate <= EndDate) //กรณีทรัพย์สินมีอายุการใช้งานไม่ถึง { if (checkcurrent[i].StartDate.AddDays(-1) <= EndDate) { EndDate = std.EndDate; difference = checkcurrent[i].StartDate.AddDays(-1) - StartDate1; } else { EndDate = std.EndDate; difference = EndDate - StartDate1; } } else if (std.StartDate <= StartDate && std.EndDate >= EndDate) //กรณีปกติ { if (checkcurrent[i].StartDate.AddDays(-1) <= EndDate) { difference = checkcurrent[i].StartDate.AddDays(-1) - StartDate1; } else { difference = EndDate - StartDate1; } } else { if (checkcurrent[i].StartDate.AddDays(-1) >= StartDate) { difference = checkcurrent[i].StartDate.AddDays(-1) - StartDate1; } else { difference = EndDate - StartDate1; } } var percen = Math.Round(std.Percen, 2); //difference = FixAssetData[i].StartDate.AddDays(-1) - StartDate1; //create TimeSpan object total += ((((amount - endprice) * 0.20M) * (difference.Days + 1)) / 360); StartDate1 = checkcurrent[i].StartDate; } if (checkcurrent.Count == i + 1) { var percen = Math.Round(std.Percen, 2); if ((amount + Math.Round(checkcurrent[i].Amount, 2)) == 0) { amount = amount; difference = checkcurrent[i].StartDate - StartDate1; //create TimeSpan object } else { amount = amount + Math.Round(checkcurrent[i].Amount, 2); difference = EndDate - StartDate1; //create TimeSpan object } endprice = endprice + Math.Round(checkcurrent[i].Quantity, 2); Console.WriteLine(EndDate + " * " + StartDate1); Console.WriteLine(amount + "-" + endprice + "*" + percen + "*" + (difference.Days + 1) + "//" + ((((amount - endprice) * (percen / 100)) * (difference.Days + 1)) / 360)); total += ((((amount - endprice) * (percen / 100)) * (difference.Days + 1)) / 360); } else { var percen = Math.Round(std.Percen, 2); amount = amount + Math.Round(checkcurrent[i].Amount, 2); endprice = endprice + Math.Round(checkcurrent[i].Quantity, 2); difference = checkcurrent[i + 1].StartDate.AddDays(-1) - StartDate1; //create TimeSpan object total += ((((amount - endprice) * (percen / 100)) * (difference.Days + 1)) / 360); StartDate1 = checkcurrent[i + 1].StartDate; } }///จบระหว่างทาง } else { if (std.EndDate <= StartDate) //วันที่สิ้นสุด น้อยกว่าเท่ากับ วันที่ เริ่ม { } else if (std.StartDate >= EndDate) //วันที่เริ่ม มากกว่าเท่ากับ วันที่สิ้นสุด { } else if (std.StartDate <= StartDate && std.EndDate >= EndDate) //วันที่เริ่ม เริ่ม น้อยกว่าเท่ากับ วันที่เริ่ม และ วันที่สิ้นสุด มากกว่าเท่ากับ วันที่สิ้นสุด { difference = EndDate - StartDate; //create TimeSpan object total = (((((amount - (endprice)) * (std.Percen / 100))) * (difference.Days + 1)) / 360); } else if (std.StartDate >= StartDate && std.EndDate >= EndDate) //วันที เริ่ม มากกว่าเท่ากับ วันที่เริ่ม และ วันที่สิ้นสุด มากกว่าเท่ากับ วันที่สิ้นสุด { difference = EndDate - std.StartDate; //create TimeSpan object total = (((((amount - (endprice)) * (std.Percen / 100))) * (difference.Days + 1)) / 360); } else if (std.StartDate <= StartDate && std.EndDate <= EndDate) //วันที่เริ่ม เริ่ม น้อยกว่าเท่ากับ วันที่เริ่ม และ วันที่สิ้นสุด มากกว่าเท่ากับ วันที่สิ้นสุด { difference = std.EndDate - StartDate; //create TimeSpan object total = (((((amount - (endprice)) * (std.Percen / 100))) * (difference.Days + 1)) / 360); } } Straight.StraightLine = Convert.ToDecimal(total); total = 0; StartDate1 = StartDate; } } } else { if (std.EndDate <= StartDate) //วันที่สิ้นสุด น้อยกว่าเท่ากับ วันที่ เริ่ม { } else if (std.StartDate >= EndDate) //วันที่เริ่ม มากกว่าเท่ากับ วันที่สิ้นสุด { } else if (std.StartDate <= StartDate && std.EndDate >= EndDate) //วันที่เริ่ม เริ่ม น้อยกว่าเท่ากับ วันที่เริ่ม และ วันที่สิ้นสุด มากกว่าเท่ากับ วันที่สิ้นสุด { difference = EndDate - StartDate; //create TimeSpan object Straight.StraightLine = (((((std.Amount - (std.PriceEnd * -1)) * (std.Percen / 100))) * (difference.Days + 1)) / 360); } else if (std.StartDate >= StartDate && std.EndDate >= EndDate) //วันที เริ่ม มากกว่าเท่ากับ วันที่เริ่ม และ วันที่สิ้นสุด มากกว่าเท่ากับ วันที่สิ้นสุด { difference = EndDate - std.StartDate; //create TimeSpan object Straight.StraightLine = (((((std.Amount - (std.PriceEnd * -1)) * (std.Percen / 100))) * (difference.Days + 1)) / 360); } else if (std.StartDate <= StartDate && std.EndDate <= EndDate) //วันที่เริ่ม เริ่ม น้อยกว่าเท่ากับ วันที่เริ่ม และ วันที่สิ้นสุด มากกว่าเท่ากับ วันที่สิ้นสุด { difference = std.EndDate - StartDate; //create TimeSpan object Straight.StraightLine = (((((std.Amount - (std.PriceEnd * -1)) * (std.Percen / 100))) * (difference.Days + 1)) / 360); } } Straights.Add(Straight); } response = Ok(new { data = Straights }); return(response); }
public async Task <IActionResult> UpdateData() { /*Check Session */ var page = "260"; var typeofuser = ""; var PermisionAction = ""; // CheckSession if (string.IsNullOrEmpty(HttpContext.Session.GetString("Username"))) { Alert("คุณไม่มีสิทธิ์ใช้งานหน้าดังกล่าว", NotificationType.error); return(RedirectToAction("Index", "Home")); } else { typeofuser = HttpContext.Session.GetString("TypeOfUserId"); PermisionAction = HttpContext.Session.GetString("PermisionAction"); if (PermisionHelper.CheckPermision(typeofuser, PermisionAction, page) == false) { Alert("คุณไม่มีสิทธิ์ใช้งานหน้าดังกล่าว", NotificationType.error); return(RedirectToAction("Index", "Home")); } } /*Check Session */ IActionResult response = Unauthorized(); var querydata = "SELECT ROW_NUMBER() OVER (ORDER BY a.FANO) AS ID,*, " + "(SELECT top 1 Amount FROM dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] WHERE [FA Posting Type]=7 and [FA No_]=a.FANO and Amount<0 and [FA No_]!='' ORDER BY [Entry No_] DESC) as PriceEnd, " + "isnull((SELECT top 1 [FA Posting Category] FROM dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] WHERE [FA Posting Category]=1 and [FA No_]=a.FANO ORDER BY [Entry No_] DESC),0) as Sale, " + "(SELECT top 1 [FA Posting Date] FROM dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] WHERE [FA Posting Category]=1 and [FA No_]=a.FANO ORDER BY [Entry No_] DESC) as SaleDate, " + "(SELECT top 1 dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[Straight-Line _] FROM dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] WHERE [FA No_]=a.FANO and [Straight-Line _]<>0 ORDER BY [Entry No_] DESC) as Percen, " + "(100/(SELECT top 1 dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[Straight-Line _] FROM dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] WHERE [FA No_]=a.FANO and [Straight-Line _]<>0 ORDER BY [Entry No_] DESC)) as Life, " + "DATEADD(year,100/(SELECT top 1 dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[Straight-Line _] FROM dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] WHERE [FA No_]=a.FANO and [Straight-Line _]<>0 ORDER BY [Entry No_] DESC),a.StartDate) as EndDate," + "0.00 as StraightLine " + " FROM( " + "SELECT " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_] as FANO, " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Description, " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Date] as StartDate, " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Amount, " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA Posting Group] AS FAPostingGroup," + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].Qty_ as Quantity " + "FROM " + "dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry] " + "LEFT JOIN dbo." + Environment.GetEnvironmentVariable("Company") + "Fixed Asset] ON dbo." + Environment.GetEnvironmentVariable("Company") + "FA Ledger Entry].[FA No_] = dbo." + Environment.GetEnvironmentVariable("Company") + "Fixed Asset].No_ " + "WHERE [FA Posting Type]=0 and Amount>=0 " + ")as a "; var StraightLines = await _navcontext.FixAssetStraightLines.FromSqlRaw(querydata).ToListAsync(); var StraightLineAll = _context.FixAssetStraightLines.ToList(); List <FixAssetStraightLine> fixAssetStraightLine = new List <FixAssetStraightLine>(); FixAssetStraightLine Straight; foreach (var std in StraightLines) { Straight = new FixAssetStraightLine(); Straight.Amount = std.Amount; Straight.EndDate = std.EndDate; Straight.FANO = std.FANO; Straight.Description = std.Description; Straight.Life = std.Life; Straight.FAPostingGroup = std.FAPostingGroup; Straight.Percen = std.Percen; Straight.PriceEnd = std.PriceEnd; Straight.Quantity = std.Quantity; Straight.Sale = std.Sale; Straight.SaleDate = std.SaleDate; Straight.StartDate = std.StartDate; Straight.StraightLine = std.StraightLine; fixAssetStraightLine.Add(Straight); } _context.FixAssetStraightLines.RemoveRange(StraightLineAll); _context.FixAssetStraightLines.AddRange(fixAssetStraightLine); await _context.SaveChangesAsync(); response = Ok(new { name = StraightLines }); return(response); }