From 46aa711262566b7a8f358cbe684c64ed526a5edb Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 25 Apr 2020 22:32:36 +0200 Subject: misc bugfixes --- .../taler-merchant-httpd_private-get-products-ID.c | 13 +++++------ ...aler-merchant-httpd_private-patch-products-ID.c | 26 ++++++++++++---------- .../taler-merchant-httpd_private-post-products.c | 14 ++++++------ 3 files changed, 27 insertions(+), 26 deletions(-) (limited to 'src/backend') diff --git a/src/backend/taler-merchant-httpd_private-get-products-ID.c b/src/backend/taler-merchant-httpd_private-get-products-ID.c index 57b3182c..611de7e8 100644 --- a/src/backend/taler-merchant-httpd_private-get-products-ID.c +++ b/src/backend/taler-merchant-httpd_private-get-products-ID.c @@ -57,9 +57,8 @@ TMH_private_get_products_ID (const struct TMH_RequestHandler *rh, json_t *reply; reply = json_pack ( - "{s:s, s:o, s:s, s:o, s:o," - " s:I, s:I, s:I, s:o, s:o," - " s:o}", + "{s:s, s:s, s:o, s:o, s:I," + " s:I, s:I, s:o, s:o, s:o}", "description", pd.description, "unit", @@ -68,11 +67,11 @@ TMH_private_get_products_ID (const struct TMH_RequestHandler *rh, TALER_JSON_from_amount (&pd.price), "taxes", pd.taxes, - /* end of first group of 5 */ - "total_stocked", - (UINT64_MAX == pd.total_stocked) + "total_stock", + (UINT64_MAX == pd.total_stock) ? (json_int_t) -1 - : (json_int_t) pd.total_stocked, + : (json_int_t) pd.total_stock, + /* end of first group of 5 */ "total_sold", (json_int_t) pd.total_sold, "total_lost", diff --git a/src/backend/taler-merchant-httpd_private-patch-products-ID.c b/src/backend/taler-merchant-httpd_private-patch-products-ID.c index 6ffc73fd..be7f52e7 100644 --- a/src/backend/taler-merchant-httpd_private-patch-products-ID.c +++ b/src/backend/taler-merchant-httpd_private-patch-products-ID.c @@ -86,16 +86,16 @@ determine_cause (struct MHD_Connection *connection, ec = TALER_EC_PRODUCTS_PATCH_TOTAL_LOST_REDUCED; hint = "total lost cannot be lowered"; } - if (pdx.total_sold > pd->total_sold) - { - ec = TALER_EC_PRODUCTS_PATCH_TOTAL_SOLD_REDUCED; - hint = "total sold cannot be lowered"; - } - if (pdx.total_stocked > pd->total_stocked) + if (pdx.total_stock > pd->total_stock) { ec = TALER_EC_PRODUCTS_PATCH_TOTAL_STOCKED_REDUCED; hint = "total stocked cannot be lowered"; } + if (pd->total_stock - pdx.total_sold > pd->total_lost) + { + ec = TALER_EC_PRODUCTS_PATCH_TOTAL_LOST_EXCEEDS_STOCKS; + hint = "total lost cannot exceed total stock minus total sold"; + } GNUNET_free (pdx.description); json_decref (pdx.description_i18n); GNUNET_free (pdx.unit); @@ -126,7 +126,7 @@ TMH_private_patch_products_ID (const struct TMH_RequestHandler *rh, struct TMH_MerchantInstance *mi = hc->instance; const char *product_id = hc->infix; struct TALER_MERCHANTDB_ProductDetails pd; - int64_t total_stocked; + int64_t total_stock; enum GNUNET_DB_QueryStatus qs; struct GNUNET_JSON_Specification spec[] = { GNUNET_JSON_spec_string ("description", @@ -143,8 +143,10 @@ TMH_private_patch_products_ID (const struct TMH_RequestHandler *rh, &pd.taxes), GNUNET_JSON_spec_json ("address", &pd.address), - GNUNET_JSON_spec_int64 ("total_stocked", - &total_stocked), + GNUNET_JSON_spec_int64 ("total_stock", + &total_stock), + GNUNET_JSON_spec_uint64 ("total_lost", + &pd.total_lost), GNUNET_JSON_spec_absolute_time ("next_restock", &pd.next_restock), GNUNET_JSON_spec_end () @@ -172,10 +174,10 @@ TMH_private_patch_products_ID (const struct TMH_RequestHandler *rh, TALER_EC_INTERNAL_INVARIANT_FAILURE, "Impossible to parse the product description"); } - if (-1 == total_stocked) - pd.total_stocked = UINT64_MAX; + if (-1 == total_stock) + pd.total_stock = UINT64_MAX; else - pd.total_stocked = (uint64_t) total_stocked; + pd.total_stock = (uint64_t) total_stock; if (NULL != json_object_get (hc->request_body, "next_restock")) { diff --git a/src/backend/taler-merchant-httpd_private-post-products.c b/src/backend/taler-merchant-httpd_private-post-products.c index c4402841..7fd62db9 100644 --- a/src/backend/taler-merchant-httpd_private-post-products.c +++ b/src/backend/taler-merchant-httpd_private-post-products.c @@ -56,7 +56,7 @@ products_equal (const struct TALER_MERCHANTDB_ProductDetails *p1, &p2->price)) && (1 == json_equal (p1->taxes, p2->taxes)) && - (p1->total_stocked == p2->total_stocked) && + (p1->total_stock == p2->total_stock) && (p1->total_sold == p2->total_sold) && (p1->total_lost == p2->total_lost) && (1 == json_equal (p1->image, @@ -84,7 +84,7 @@ TMH_private_post_products (const struct TMH_RequestHandler *rh, struct TMH_MerchantInstance *mi = hc->instance; struct TALER_MERCHANTDB_ProductDetails pd; const char *product_id; - int64_t total_stocked; + int64_t total_stock; enum GNUNET_DB_QueryStatus qs; struct GNUNET_JSON_Specification spec[] = { GNUNET_JSON_spec_string ("product_id", @@ -103,8 +103,8 @@ TMH_private_post_products (const struct TMH_RequestHandler *rh, &pd.taxes), GNUNET_JSON_spec_json ("address", &pd.address), - GNUNET_JSON_spec_int64 ("total_stocked", - &total_stocked), + GNUNET_JSON_spec_int64 ("total_stock", + &total_stock), GNUNET_JSON_spec_absolute_time ("next_restock", &pd.next_restock), GNUNET_JSON_spec_end () @@ -131,10 +131,10 @@ TMH_private_post_products (const struct TMH_RequestHandler *rh, "Impossible to parse the order"); } - if (-1 == total_stocked) - pd.total_stocked = UINT64_MAX; + if (-1 == total_stock) + pd.total_stock = UINT64_MAX; else - pd.total_stocked = (uint64_t) total_stocked; + pd.total_stock = (uint64_t) total_stock; if (NULL != json_object_get (hc->request_body, "next_restock")) { -- cgit v1.2.3