This commit is contained in:
2023-01-23 23:22:19 +00:00
parent c75e49412d
commit d40367c884
4 changed files with 23 additions and 24 deletions

2
.vscode/launch.json vendored
View File

@@ -33,7 +33,7 @@
"SOCKEYE_DB_CONNECTION": "Server=localhost;Username=postgres;Password=sockeye;Database=sockeye;CommandTimeout=300;",
"SOCKEYE_DATA_PATH": "c:\\temp\\sockeye",
"SOCKEYE_USE_URLS": "http://*:7676;",
"SOCKEYE_PERMANENTLY_ERASE_DATABASE": "true",
//"SOCKEYE_PERMANENTLY_ERASE_DATABASE": "true",
//"SOCKEYE_REPORT_RENDERING_TIMEOUT":"1",
"SOCKEYE_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_14\\bin"
},

View File

@@ -19,7 +19,7 @@ namespace Sockeye.DataList
FieldDefinitions.Add(new DataListFieldDefinition
{
TKey = "VendorNotificationCreated",
FieldKey = "VendorNotificationSalesOrderNumber",
FieldKey = "VendorNotificationCreated",
SockType = (int)SockType.VendorNotification,
UiFieldDataType = (int)UiFieldDataType.DateTime,
SqlIdColumnName = "avendornotification.id",

View File

@@ -354,6 +354,7 @@ namespace Sockeye.Biz
vn.VendorId = 1;
vn.VendorData = jVendorNotificationItem["data"].Value<string>();
vn.Processed = vn.Created;//indicate it's been processed
ct.VendorNotification.Add(vn);
await ct.SaveChangesAsync();

View File

@@ -94,13 +94,6 @@ namespace Sockeye.Biz
{
var jData = JObject.Parse(vn.VendorData);
#if (DEBUG)
if (vn.VendorData.Contains("coupon"))
{
//trying to find out where the coupon code key is located in the order
System.Diagnostics.Debugger.Break();
}
#endif
//It's a test purchase, no need to process it any further...or is there??
if (jData["order_notification"]["purchase"]["is_test"] != null && jData["order_notification"]["purchase"]["is_test"].Value<bool>() == true)
{
@@ -153,23 +146,15 @@ namespace Sockeye.Biz
//here there could be several potential issues:
//name differs because it was a separate site in rockfish, it's not cool to change the name
//email differs, this can happen and is ok
//account number differs if was empty then it's ok. If it wasn't empty and it differs this is a potential problem:
//account number differs if was empty then it's ok. If it wasn't empty and it differs this is unfortunately normal as users may re-buy again with new account or buy an addon with a new account
//so the vendor account nubmer should just be the most recent for finding them purposes I guess
//
if (customer.EmailAddress != jCustomerEmail)
{
customer.EmailAddress = jCustomerEmail;//assume it was empty or has been recently updated
}
customer.EmailAddress = jCustomerEmail;//assume it was empty or has been recently updated
if (customer.AccountNumber != jCustomerAccountNumber)
{
if (string.IsNullOrWhiteSpace(customer.AccountNumber))
customer.AccountNumber = jCustomerAccountNumber;//this is ok, there wasn't an account number before so we're just adding it
else
{
// this is problematic, it matched but for some reason the account numbers differ, there's no safe way to process this so alert and bail
throw new System.ApplicationException($"Not processed due to error updating existing Customer: {customer.Name} Account numbers differ, expected: {customer.AccountNumber} vendor data:{vn.VendorData}");
}
}
customer.AccountNumber = jCustomerAccountNumber;//see above
//refresh
UpdateCustomerFromVendorData(jData, customer);
@@ -185,7 +170,7 @@ namespace Sockeye.Biz
///////////////////////////////////////////////////////////////////////////////////////////
var salesOrderNumber = jData["order_notification"]["purchase"]["purchase_id"].Value<string>();
#warning Is this processing the date into UTC properly??
//https://www.newtonsoft.com/json/help/html/DatesInJSON.htm
var purchaseDate = jData["order_notification"]["purchase"]["purchase_date"].Value<DateTime>();
@@ -214,9 +199,22 @@ namespace Sockeye.Biz
p.VendorFee = jPurchase["accounting"]["margin_net"].Value<decimal>();
p.Revenue = jPurchase["accounting"]["your_revenue"].Value<decimal>();
}
p.CouponCode = "UNKNOWN WHERE IN VENDOR DATA CONTAINS COUPON CODE";
if (jPurchase["promotion_coupon"] != null)
p.CouponCode = jPurchase["promotion_coupon"].Value<string>();
if (jPurchase["promotion"] != null)
p.CouponCode += $" {jPurchase["promotion"].Value<string>()}";
p.Quantity = jPurchase["quantity"].Value<int>();
p.VendorNotificationId = vn.Id;
//it's a subscription?
if (jPurchase["subscription"] != null && jPurchase["subscription"]["expiration_date"] != null)
{
p.ExpireDate = jPurchase["subscription"]["expiration_date"].Value<DateTime>();
}
PurchaseBiz pbiz = PurchaseBiz.GetBiz(ct);
p = await pbiz.CreateAsync(p);
if (p == null)