mirror of
https://github.com/stokebob/bnhtrade.git
synced 2026-05-18 19:48:23 +00:00
SP-API stock reconciliation
Amazon had depreciated a number of reports that were used for stock reconciliation. Application now uses the new fba ledger report to reconcile. It is currently untested, as this requires data from Amazon. Methods that require testing will return a 'NotImplementedException'. Also, removed the depreciated ILMerge and replaced with ILRepack. Plus much more tidying up, and improvements.
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
using System;
|
||||
using NUnit.Framework.Internal;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Dapper;
|
||||
//using Dapper;
|
||||
|
||||
namespace bnhtrade.Core.Data.Database.Stock
|
||||
{
|
||||
@@ -76,6 +77,37 @@ namespace bnhtrade.Core.Data.Database.Stock
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrevies the IsProcessed for a given stock sku transaction
|
||||
/// </summary>
|
||||
/// <param name="skuTransactionId">the stock transaction id</param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="ArgumentException">Invalid stock transaction id</exception>
|
||||
public bool GetIsProcessed(int skuTransactionId)
|
||||
{
|
||||
using (var conn = new SqlConnection(SqlConnectionString))
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
using (var cmd = new SqlCommand(@"
|
||||
SELECT IsProcessed FROM tblStockSkuTransaction WHERE StockSkuTransactionID=@skuTransactionId
|
||||
", conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@skuTransactionId", skuTransactionId);
|
||||
|
||||
object obj = cmd.ExecuteScalar();
|
||||
|
||||
if (obj == null || obj == DBNull.Value)
|
||||
{
|
||||
throw new ArgumentException("invalid stock transaction id");
|
||||
}
|
||||
else
|
||||
{
|
||||
return (bool)obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Populates model class from filtered database results
|
||||
@@ -88,7 +120,8 @@ namespace bnhtrade.Core.Data.Database.Stock
|
||||
// Adding this means they at least get processed in the correct order (maybe)!
|
||||
|
||||
var resultList = new List<Model.Stock.SkuTransaction>();
|
||||
var parameters = new DynamicParameters();
|
||||
//var parameters = new DynamicParameters();
|
||||
var parameterNew = new Dictionary<string, object>();
|
||||
|
||||
string sql = @"
|
||||
SELECT tblStockSkuTransaction.StockSkuTransactionID AS SkuTransactionId
|
||||
@@ -102,7 +135,7 @@ namespace bnhtrade.Core.Data.Database.Stock
|
||||
,tblStockSkuTransactionType.TypeCode AS SkuTransactionTypeCode
|
||||
,tblStockSkuTransactionType.TypeName AS SkuTransactionTypeName
|
||||
,tblSku.skuSkuNumber AS SkuNumber
|
||||
,tblStockSkuTransaction.SkuID
|
||||
,tblStockSkuTransaction.RecordCreated
|
||||
FROM tblStockSkuTransaction
|
||||
INNER JOIN tblStockSkuTransactionType ON tblStockSkuTransaction.StockSkuTransactionTypeID = tblStockSkuTransactionType.StockSkuTransactionTypeID
|
||||
INNER JOIN tblSku ON tblStockSkuTransaction.SkuID = tblSku.skuSkuID
|
||||
@@ -110,7 +143,7 @@ namespace bnhtrade.Core.Data.Database.Stock
|
||||
|
||||
if (transactionIdList.Any())
|
||||
{
|
||||
parameters.Add("@transactionIdList", this.transactionIdList);
|
||||
parameterNew.Add("@transactionIdList", this.transactionIdList);
|
||||
|
||||
sql += @"
|
||||
AND tblStockSkuTransaction.StockSkuTransactionID IN @transactionIdList ";
|
||||
@@ -133,7 +166,7 @@ namespace bnhtrade.Core.Data.Database.Stock
|
||||
|
||||
if (StockTransactionTypeName != null && StockTransactionTypeName.Any())
|
||||
{
|
||||
parameters.Add("@stockTransactionTypeName", StockTransactionTypeName);
|
||||
parameterNew.Add("@stockTransactionTypeName", StockTransactionTypeName);
|
||||
|
||||
sql += @"
|
||||
AND tblStockSkuTransactionType.TypeName IN @stockTransactionTypeName ";
|
||||
@@ -141,7 +174,7 @@ namespace bnhtrade.Core.Data.Database.Stock
|
||||
|
||||
if (StockTransactionTypeCode != null && StockTransactionTypeCode.Any())
|
||||
{
|
||||
parameters.Add("@stockTransactionTypeCode", StockTransactionTypeCode);
|
||||
parameterNew.Add("@stockTransactionTypeCode", StockTransactionTypeCode);
|
||||
|
||||
sql += @"
|
||||
AND tblStockSkuTransactionType.TypeCode IN @stockTransactionTypeCode ";
|
||||
@@ -155,23 +188,64 @@ namespace bnhtrade.Core.Data.Database.Stock
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
resultList = conn.Query<Model.Stock.SkuTransaction>(sql, parameters).ToList();
|
||||
}
|
||||
|
||||
// set datetime kind
|
||||
for (int i = 0; i < resultList.Count; i++)
|
||||
{
|
||||
if (resultList[i].IsSetTransactionDate)
|
||||
using (SqlCommand cmd = new SqlCommand(sql, conn))
|
||||
{
|
||||
resultList[i].TransactionDate = DateTime.SpecifyKind(resultList[i].TransactionDate, DateTimeKind.Utc);
|
||||
foreach (var param in parameterNew)
|
||||
{
|
||||
cmd.Parameters.AddWithValue(param.Key, param.Value);
|
||||
}
|
||||
|
||||
using (SqlDataReader reader = cmd.ExecuteReader())
|
||||
{
|
||||
if (!reader.HasRows)
|
||||
{
|
||||
return resultList;
|
||||
}
|
||||
else
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
int skuTransactionId = reader.GetInt32(0);
|
||||
|
||||
DateTime transactionDate = DateTime.SpecifyKind(reader.GetDateTime(1), DateTimeKind.Utc);
|
||||
|
||||
int? foreignKey = null;
|
||||
if (!reader.IsDBNull(2)) { reader.GetInt32(2); }
|
||||
|
||||
string reference = null;
|
||||
if (!reader.IsDBNull(3)) { reader.GetString(3); }
|
||||
|
||||
string detail = null;
|
||||
if (!reader.IsDBNull(4)) { reader.GetString(4); }
|
||||
|
||||
int quantity = reader.GetInt32(5);
|
||||
|
||||
bool isProcessed = reader.GetBoolean(6);
|
||||
|
||||
int? stockJournalId = null;
|
||||
if (!reader.IsDBNull(7)) { reader.GetInt32(7); }
|
||||
|
||||
string skuTransactionTypeCode = reader.GetString(8);
|
||||
|
||||
string skuTransactionTypeName = reader.GetString(9);
|
||||
|
||||
string skuNumber = reader.GetString(10);
|
||||
|
||||
DateTime recordCreated = DateTime.SpecifyKind(reader.GetDateTime(11), DateTimeKind.Utc);
|
||||
|
||||
var item = new Model.Stock.SkuTransaction(skuTransactionId, transactionDate, skuTransactionTypeCode, foreignKey, reference
|
||||
, detail, skuNumber, quantity, isProcessed, stockJournalId, recordCreated);
|
||||
resultList.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return resultList;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get Stock SKU Transaction by ID
|
||||
/// Get Stock SKU Transaction by ID. Overrides any filters already set.
|
||||
/// </summary>
|
||||
/// <param name="transactionIdList"></param>
|
||||
/// <returns>List of SkuTransaction</returns>
|
||||
|
||||
Reference in New Issue
Block a user