summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-04-25 22:32:36 +0200
committerChristian Grothoff <christian@grothoff.org>2020-04-25 22:32:36 +0200
commit46aa711262566b7a8f358cbe684c64ed526a5edb (patch)
treef4defe802906f061e66ba1ce82247f3c4c8d1f1b /src/backend
parent23750b7d0622c7080ff8acde2b623568b98a88f4 (diff)
downloadmerchant-46aa711262566b7a8f358cbe684c64ed526a5edb.tar.gz
merchant-46aa711262566b7a8f358cbe684c64ed526a5edb.tar.bz2
merchant-46aa711262566b7a8f358cbe684c64ed526a5edb.zip
misc bugfixes
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/taler-merchant-httpd_private-get-products-ID.c13
-rw-r--r--src/backend/taler-merchant-httpd_private-patch-products-ID.c26
-rw-r--r--src/backend/taler-merchant-httpd_private-post-products.c14
3 files changed, 27 insertions, 26 deletions
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"))
{