Skip to content

Commit a8477bb

Browse files
authored
LYNX-587 Expose Tax Display Settings via GraphQL
1 parent 63fdbf0 commit a8477bb

File tree

3 files changed

+127
-4
lines changed

3 files changed

+127
-4
lines changed

app/code/Magento/SalesGraphQl/etc/graphql/di.xml

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0"?>
22
<!--
33
/**
4-
* Copyright © Magento, Inc. All rights reserved.
5-
* See COPYING.txt for license details.
4+
* Copyright 2024 Adobe
5+
* All Rights Reserved.
66
*/
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
@@ -61,4 +61,25 @@
6161
</argument>
6262
</arguments>
6363
</type>
64+
<type name="Magento\StoreGraphQl\Model\Resolver\Store\StoreConfigDataProvider">
65+
<arguments>
66+
<argument name="extendedConfigData" xsi:type="array">
67+
<item name="display_product_prices_in_catalog" xsi:type="string">tax/display/type</item>
68+
<item name="display_shipping_prices" xsi:type="string">tax/display/shipping</item>
69+
<item name="orders_invoices_credit_memos_display_price" xsi:type="string">tax/sales_display/price</item>
70+
<item name="orders_invoices_credit_memos_display_subtotal" xsi:type="string">tax/sales_display/subtotal</item>
71+
<item name="orders_invoices_credit_memos_display_shipping_amount" xsi:type="string">tax/sales_display/shipping</item>
72+
<item name="orders_invoices_credit_memos_display_grandtotal" xsi:type="string">tax/sales_display/grandtotal</item>
73+
<item name="orders_invoices_credit_memos_display_full_summary" xsi:type="string">tax/sales_display/full_summary</item>
74+
<item name="orders_invoices_credit_memos_display_zero_tax" xsi:type="string">tax/sales_display/zero_tax</item>
75+
<item name="fixed_product_taxes_enable" xsi:type="string">tax/weee/enable</item>
76+
<item name="fixed_product_taxes_display_prices_in_product_lists" xsi:type="string">tax/weee/display_list</item>
77+
<item name="fixed_product_taxes_display_prices_on_product_view_page" xsi:type="string">tax/weee/display</item>
78+
<item name="fixed_product_taxes_display_prices_in_sales_modules" xsi:type="string">tax/weee/display_sales</item>
79+
<item name="fixed_product_taxes_display_prices_in_emails" xsi:type="string">tax/weee/display_email</item>
80+
<item name="fixed_product_taxes_apply_tax_to_fpt" xsi:type="string">tax/weee/apply_vat</item>
81+
<item name="fixed_product_taxes_include_fpt_in_subtotal" xsi:type="string">tax/weee/include_in_subtotal</item>
82+
</argument>
83+
</arguments>
84+
</type>
6485
</config>

app/code/Magento/SalesGraphQl/etc/schema.graphqls

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# Copyright 2024 Adobe
2-
# All Rights Reserved.
1+
# Copyright 2024 Adobe
2+
# All Rights Reserved.
33

44
type Query {
55
customerOrders: CustomerOrders @resolver(class: "Magento\\SalesGraphQl\\Model\\Resolver\\Orders") @deprecated(reason: "Use the `customer` query instead.") @cache(cacheable: false)
@@ -316,3 +316,21 @@ input OrderInformationInput @doc(description: "Input to retrieve an order based
316316
enum OrderActionType @doc(description: "The list of available order actions.") {
317317
REORDER
318318
}
319+
320+
type StoreConfig {
321+
display_product_prices_in_catalog: Boolean! @doc(description: "Configuration data from tax/display/type")
322+
display_shipping_prices: Boolean! @doc(description: "Configuration data from tax/display/shipping")
323+
orders_invoices_credit_memos_display_price: Boolean! @doc(description: "Configuration data from tax/sales_display/price")
324+
orders_invoices_credit_memos_display_subtotal: Boolean! @doc(description: "Configuration data from tax/sales_display/subtotal")
325+
orders_invoices_credit_memos_display_shipping_amount: Boolean! @doc(description: "Configuration data from tax/sales_display/shipping")
326+
orders_invoices_credit_memos_display_grandtotal: Boolean! @doc(description: "Configuration data from tax/sales_display/grandtotal")
327+
orders_invoices_credit_memos_display_full_summary: Boolean! @doc(description: "Configuration data from tax/sales_display/full_summary")
328+
orders_invoices_credit_memos_display_zero_tax: Boolean! @doc(description: "Configuration data from tax/sales_display/zero_tax")
329+
fixed_product_taxes_enable: Boolean! @doc(description: "Configuration data from tax/weee/enable")
330+
fixed_product_taxes_display_prices_in_product_lists: Int @doc(description: "Configuration data from tax/weee/display_list")
331+
fixed_product_taxes_display_prices_on_product_view_page: Int @doc(description: "Configuration data from tax/weee/display")
332+
fixed_product_taxes_display_prices_in_sales_modules: Int @doc(description: "Configuration data from tax/weee/display_sales")
333+
fixed_product_taxes_display_prices_in_emails: Int @doc(description: "Configuration data from tax/weee/display_email")
334+
fixed_product_taxes_apply_tax_to_fpt: Boolean! @doc(description: "Configuration data from tax/weee/apply_vat")
335+
fixed_product_taxes_include_fpt_in_subtotal: Boolean! @doc(description: "Configuration data from tax/weee/include_in_subtotal")
336+
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<?php
2+
/**
3+
* Copyright 2024 Adobe
4+
* All Rights Reserved.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\GraphQl\Sales;
9+
10+
use Exception;
11+
use Magento\TestFramework\TestCase\GraphQlAbstract;
12+
13+
class SalesTaxStoreConfigTest extends GraphQlAbstract
14+
{
15+
private const CONFIG_KEYS = [
16+
'display_product_prices_in_catalog',
17+
'display_shipping_prices',
18+
'orders_invoices_credit_memos_display_price',
19+
'orders_invoices_credit_memos_display_subtotal',
20+
'orders_invoices_credit_memos_display_shipping_amount',
21+
'orders_invoices_credit_memos_display_grandtotal',
22+
'orders_invoices_credit_memos_display_full_summary',
23+
'orders_invoices_credit_memos_display_zero_tax',
24+
'fixed_product_taxes_enable',
25+
'fixed_product_taxes_display_prices_in_product_lists',
26+
'fixed_product_taxes_display_prices_on_product_view_page',
27+
'fixed_product_taxes_display_prices_in_sales_modules',
28+
'fixed_product_taxes_display_prices_in_emails',
29+
'fixed_product_taxes_apply_tax_to_fpt',
30+
'fixed_product_taxes_include_fpt_in_subtotal',
31+
];
32+
/**
33+
* @throws Exception
34+
*/
35+
public function testSalesTaxStoreConfigExists()
36+
{
37+
$response = $this->graphQlQuery($this->getQuery());
38+
$this->assertArrayHasKey('storeConfig', $response);
39+
$this->assertStoreConfigsExist($response['storeConfig']);
40+
}
41+
42+
/**
43+
* Check if all the added store configs are returned in graphql response
44+
*
45+
* @param array $response
46+
* @return void
47+
*/
48+
private function assertStoreConfigsExist(array $response): void
49+
{
50+
foreach (self::CONFIG_KEYS as $key) {
51+
$this->assertArrayHasKey($key, $response);
52+
}
53+
}
54+
55+
/**
56+
* Generates storeConfig query with newly added configurations from sales->tax
57+
*
58+
* @return string
59+
*/
60+
private function getQuery(): string
61+
{
62+
return <<<QUERY
63+
{
64+
storeConfig {
65+
display_product_prices_in_catalog
66+
display_shipping_prices
67+
orders_invoices_credit_memos_display_price
68+
orders_invoices_credit_memos_display_subtotal
69+
orders_invoices_credit_memos_display_shipping_amount
70+
orders_invoices_credit_memos_display_grandtotal
71+
orders_invoices_credit_memos_display_full_summary
72+
orders_invoices_credit_memos_display_zero_tax
73+
fixed_product_taxes_enable
74+
fixed_product_taxes_display_prices_in_product_lists
75+
fixed_product_taxes_display_prices_on_product_view_page
76+
fixed_product_taxes_display_prices_in_sales_modules
77+
fixed_product_taxes_display_prices_in_emails
78+
fixed_product_taxes_apply_tax_to_fpt
79+
fixed_product_taxes_include_fpt_in_subtotal
80+
}
81+
}
82+
QUERY;
83+
}
84+
}

0 commit comments

Comments
 (0)