From 9c242406283cc32e9fec259cd48e117ad3324add Mon Sep 17 00:00:00 2001 From: segorov Date: Tue, 14 Jul 2020 14:58:56 +0300 Subject: [PATCH 01/14] MC-40388 add companysettings put + fields --- .../api/clients/CompanySettingsClient.java | 8 ++-- .../clients/endpoints/PutByIdEndpoint.java | 2 +- .../CompanySettings.java} | 43 ++++++++++++++++--- .../java/com/lognex/api/entities/Meta.java | 3 +- .../api/entities/CompanySettingsTest.java | 37 ++++++++++++++-- src/test/resources/methods.csv | 2 +- 6 files changed, 80 insertions(+), 15 deletions(-) rename src/main/java/com/lognex/api/{responses/CompanySettingsResponse.java => entities/CompanySettings.java} (52%) diff --git a/src/main/java/com/lognex/api/clients/CompanySettingsClient.java b/src/main/java/com/lognex/api/clients/CompanySettingsClient.java index bee4b88b..b32bde76 100644 --- a/src/main/java/com/lognex/api/clients/CompanySettingsClient.java +++ b/src/main/java/com/lognex/api/clients/CompanySettingsClient.java @@ -4,13 +4,15 @@ import com.lognex.api.clients.endpoints.ApiChainElement; import com.lognex.api.clients.endpoints.GetEndpoint; import com.lognex.api.clients.endpoints.MetadataEndpoint; +import com.lognex.api.clients.endpoints.PutByIdEndpoint; import com.lognex.api.entities.MetaEntity; -import com.lognex.api.responses.CompanySettingsResponse; +import com.lognex.api.entities.CompanySettings; import com.lognex.api.responses.metadata.CompanySettingsMetadata; public final class CompanySettingsClient extends EntityClientBase - implements GetEndpoint, + implements GetEndpoint, + PutByIdEndpoint, MetadataEndpoint { public CompanySettingsClient(ApiClient api) { @@ -24,7 +26,7 @@ public PriceTypeClient pricetype() { @Override public Class entityClass() { - return CompanySettingsResponse.class; + return CompanySettings.class; } @Override diff --git a/src/main/java/com/lognex/api/clients/endpoints/PutByIdEndpoint.java b/src/main/java/com/lognex/api/clients/endpoints/PutByIdEndpoint.java index 9e8be372..657671bc 100644 --- a/src/main/java/com/lognex/api/clients/endpoints/PutByIdEndpoint.java +++ b/src/main/java/com/lognex/api/clients/endpoints/PutByIdEndpoint.java @@ -14,7 +14,7 @@ public interface PutByIdEndpoint extends Endpoint { default void update(String id, T updatedEntity) throws IOException, ApiClientException { MetaHrefUtils.fillMeta(updatedEntity, api().getHost() + API_PATH); T responseEntity = HttpRequestExecutor - .path(api(), path() + id) + .path(api(), path() + (id == null ? "" : id)) .body(updatedEntity) .put((Class) entityClass()); diff --git a/src/main/java/com/lognex/api/responses/CompanySettingsResponse.java b/src/main/java/com/lognex/api/entities/CompanySettings.java similarity index 52% rename from src/main/java/com/lognex/api/responses/CompanySettingsResponse.java rename to src/main/java/com/lognex/api/entities/CompanySettings.java index 36e9f066..9c672fb1 100644 --- a/src/main/java/com/lognex/api/responses/CompanySettingsResponse.java +++ b/src/main/java/com/lognex/api/entities/CompanySettings.java @@ -1,8 +1,5 @@ -package com.lognex.api.responses; +package com.lognex.api.entities; -import com.lognex.api.entities.Currency; -import com.lognex.api.entities.MetaEntity; -import com.lognex.api.entities.PriceType; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -14,7 +11,7 @@ @Setter @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public class CompanySettingsResponse extends MetaEntity { +public class CompanySettings extends MetaEntity { /** * Ссылка на стандартную валюту */ @@ -44,4 +41,40 @@ public enum DiscountStrategy { */ byPriority } + + /** + * Использовать сквозную нумерацию локументов + * */ + + private Boolean globalOperationNumbering; + + /** + * Запретить отгрузку отсутствующих товаров + * */ + + private Boolean checkShippingStock; + + /** + * Автоматически устанавливать минимальную цену + * */ + + private Boolean checkMinPrice; + + /** + * Использовать корзину + * */ + + private Boolean useRecycleBin; + + /** + * Использовать адрес компании для электронных писем + * */ + + private Boolean useCompanyAddress; + + /** + * Адрес компании для электронных писем + * */ + + private String companyAddress; } diff --git a/src/main/java/com/lognex/api/entities/Meta.java b/src/main/java/com/lognex/api/entities/Meta.java index 1f00c5b8..4a5469d4 100644 --- a/src/main/java/com/lognex/api/entities/Meta.java +++ b/src/main/java/com/lognex/api/entities/Meta.java @@ -11,7 +11,6 @@ import com.lognex.api.entities.products.Product; import com.lognex.api.entities.products.Service; import com.lognex.api.entities.products.Variant; -import com.lognex.api.responses.CompanySettingsResponse; import com.lognex.api.responses.metadata.CompanySettingsMetadata; import com.lognex.api.utils.MetaHrefUtils; import lombok.EqualsAndHashCode; @@ -100,7 +99,7 @@ public enum Type { COMMISSION_REPORT_IN_POSITION("commissionreportinposition", DocumentPosition.class), COMMISSION_REPORT_OUT("commissionreportout", CommissionReportOut.class), COMMISSION_REPORT_OUT_POSITION("commissionreportoutposition", DocumentPosition.class), - COMPANY_SETTINGS("companysettings", CompanySettingsResponse.class), + COMPANY_SETTINGS("companysettings", CompanySettings.class), CONSIGNMENT("consignment", Consignment.class), CONTACT_PERSON("contactperson", ContactPerson.class), CONTRACT("contract", Contract.class), diff --git a/src/test/java/com/lognex/api/entities/CompanySettingsTest.java b/src/test/java/com/lognex/api/entities/CompanySettingsTest.java index da013420..435f8173 100644 --- a/src/test/java/com/lognex/api/entities/CompanySettingsTest.java +++ b/src/test/java/com/lognex/api/entities/CompanySettingsTest.java @@ -1,6 +1,5 @@ package com.lognex.api.entities; -import com.lognex.api.responses.CompanySettingsResponse; import com.lognex.api.responses.ListEntity; import com.lognex.api.responses.metadata.CompanySettingsMetadata; import com.lognex.api.utils.ApiClientException; @@ -14,14 +13,46 @@ public class CompanySettingsTest extends EntityTestBase { @Test public void getTest() throws IOException, ApiClientException { - CompanySettingsResponse response = api.entity().companysettings().get(); + CompanySettings response = api.entity().companysettings().get(); ListEntity currency = api.entity().currency().get(filterEq("isoCode", "RUB")); assertEquals(1, currency.getRows().size()); assertEquals(response.getCurrency(), currency.getRows().get(0)); assertTrue(response.getPriceTypes().size() > 0); assertTrue(response.getPriceTypes().stream().anyMatch(p -> p.getName().equals("Цена продажи"))); - assertEquals(CompanySettingsResponse.DiscountStrategy.bySum, response.getDiscountStrategy()); + assertEquals(CompanySettings.DiscountStrategy.bySum, response.getDiscountStrategy()); + assertEquals(false, response.getGlobalOperationNumbering()); + assertEquals(false, response.getCheckShippingStock()); + assertEquals(false, response.getCheckMinPrice()); + assertEquals(true, response.getUseRecycleBin()); + assertEquals(false, response.getUseCompanyAddress()); + } + + @Test + public void updateTest() throws IOException, ApiClientException { + CompanySettings companySettings = api.entity().companysettings().get(); + companySettings.setGlobalOperationNumbering(true); + companySettings.setCheckShippingStock(true); + companySettings.setCheckMinPrice(true); + companySettings.setUseRecycleBin(false); + companySettings.setUseCompanyAddress(true); + companySettings.setCompanyAddress("123@123.ru"); + api.entity().companysettings().update(companySettings); + companySettings = api.entity().companysettings().get(); + assertEquals(true, companySettings.getGlobalOperationNumbering()); + assertEquals(true, companySettings.getCheckShippingStock()); + assertEquals(true, companySettings.getCheckMinPrice()); + assertEquals(false, companySettings.getUseRecycleBin()); + assertEquals(true, companySettings.getUseCompanyAddress()); + assertEquals("123@123.ru", companySettings.getCompanyAddress()); + //revert changes + companySettings.setGlobalOperationNumbering(false); + companySettings.setCheckShippingStock(false); + companySettings.setCheckMinPrice(false); + companySettings.setUseRecycleBin(true); + companySettings.setUseCompanyAddress(false); + companySettings.setCompanyAddress(null); + api.entity().companysettings().update(companySettings); } @Test diff --git a/src/test/resources/methods.csv b/src/test/resources/methods.csv index 4737c34e..f01323bf 100644 --- a/src/test/resources/methods.csv +++ b/src/test/resources/methods.csv @@ -80,7 +80,7 @@ POST;https://test.moysklad/api/remap/1.2/entity/factureout/ID/export/;String,Exp POST;https://test.moysklad/api/remap/1.2/entity/customerorder/ID/export/;String,Template,ExportExtension,File;void GET;https://test.moysklad/api/remap/1.2/entity/purchaseorder/ENTITY_ID;MetaEntity,ApiParam[];PurchaseOrder PUT;https://test.moysklad/api/remap/1.2/entity/loss/ID/positions/ID;String,String,DocumentPosition;void -GET;https://test.moysklad/api/remap/1.2/context/companysettings/;ApiParam[];CompanySettingsResponse +GET;https://test.moysklad/api/remap/1.2/context/companysettings/;ApiParam[];CompanySettings POST;https://test.moysklad/api/remap/1.2/entity/salesreturn/ID/export/;String,ExportRequest,File;void POST;https://test.moysklad/api/remap/1.2/entity/inventory/ID/export/;String,ExportRequest,File,boolean;void POST;https://test.moysklad/api/remap/1.2/entity/retaildrawercashout/ID/export/;String,Template,File,boolean;void From c00db6d7fdcb1d2df9cc5fecc2279335c6e04dd3 Mon Sep 17 00:00:00 2001 From: segorov Date: Tue, 14 Jul 2020 15:56:32 +0300 Subject: [PATCH 02/14] MC-40388 fix tests --- src/test/resources/methods.csv | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/resources/methods.csv b/src/test/resources/methods.csv index f01323bf..31f7b844 100644 --- a/src/test/resources/methods.csv +++ b/src/test/resources/methods.csv @@ -81,6 +81,8 @@ POST;https://test.moysklad/api/remap/1.2/entity/customerorder/ID/export/;String, GET;https://test.moysklad/api/remap/1.2/entity/purchaseorder/ENTITY_ID;MetaEntity,ApiParam[];PurchaseOrder PUT;https://test.moysklad/api/remap/1.2/entity/loss/ID/positions/ID;String,String,DocumentPosition;void GET;https://test.moysklad/api/remap/1.2/context/companysettings/;ApiParam[];CompanySettings +PUT;https://test.moysklad/api/remap/1.2/context/companysettings/ENTITY_ID;MetaEntity;void +PUT;https://test.moysklad/api/remap/1.2/context/companysettings/ID;String,MetaEntity;void POST;https://test.moysklad/api/remap/1.2/entity/salesreturn/ID/export/;String,ExportRequest,File;void POST;https://test.moysklad/api/remap/1.2/entity/inventory/ID/export/;String,ExportRequest,File,boolean;void POST;https://test.moysklad/api/remap/1.2/entity/retaildrawercashout/ID/export/;String,Template,File,boolean;void From 2c2d3021a46d330d102c14374c9bc15faa49264f Mon Sep 17 00:00:00 2001 From: segorov Date: Wed, 15 Jul 2020 11:07:58 +0300 Subject: [PATCH 03/14] MC-40388 fix review --- .../api/clients/CompanySettingsClient.java | 6 +-- .../clients/endpoints/PutByIdEndpoint.java | 2 +- .../api/entities/CompanySettingsTest.java | 43 +++++++++++-------- src/test/resources/methods.csv | 3 +- 4 files changed, 30 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/lognex/api/clients/CompanySettingsClient.java b/src/main/java/com/lognex/api/clients/CompanySettingsClient.java index b32bde76..325551a8 100644 --- a/src/main/java/com/lognex/api/clients/CompanySettingsClient.java +++ b/src/main/java/com/lognex/api/clients/CompanySettingsClient.java @@ -4,15 +4,15 @@ import com.lognex.api.clients.endpoints.ApiChainElement; import com.lognex.api.clients.endpoints.GetEndpoint; import com.lognex.api.clients.endpoints.MetadataEndpoint; -import com.lognex.api.clients.endpoints.PutByIdEndpoint; -import com.lognex.api.entities.MetaEntity; +import com.lognex.api.clients.endpoints.PutEndpoint; import com.lognex.api.entities.CompanySettings; +import com.lognex.api.entities.MetaEntity; import com.lognex.api.responses.metadata.CompanySettingsMetadata; public final class CompanySettingsClient extends EntityClientBase implements GetEndpoint, - PutByIdEndpoint, + PutEndpoint, MetadataEndpoint { public CompanySettingsClient(ApiClient api) { diff --git a/src/main/java/com/lognex/api/clients/endpoints/PutByIdEndpoint.java b/src/main/java/com/lognex/api/clients/endpoints/PutByIdEndpoint.java index 657671bc..9e8be372 100644 --- a/src/main/java/com/lognex/api/clients/endpoints/PutByIdEndpoint.java +++ b/src/main/java/com/lognex/api/clients/endpoints/PutByIdEndpoint.java @@ -14,7 +14,7 @@ public interface PutByIdEndpoint extends Endpoint { default void update(String id, T updatedEntity) throws IOException, ApiClientException { MetaHrefUtils.fillMeta(updatedEntity, api().getHost() + API_PATH); T responseEntity = HttpRequestExecutor - .path(api(), path() + (id == null ? "" : id)) + .path(api(), path() + id) .body(updatedEntity) .put((Class) entityClass()); diff --git a/src/test/java/com/lognex/api/entities/CompanySettingsTest.java b/src/test/java/com/lognex/api/entities/CompanySettingsTest.java index 435f8173..0c072dce 100644 --- a/src/test/java/com/lognex/api/entities/CompanySettingsTest.java +++ b/src/test/java/com/lognex/api/entities/CompanySettingsTest.java @@ -31,27 +31,34 @@ public void getTest() throws IOException, ApiClientException { @Test public void updateTest() throws IOException, ApiClientException { CompanySettings companySettings = api.entity().companysettings().get(); - companySettings.setGlobalOperationNumbering(true); - companySettings.setCheckShippingStock(true); - companySettings.setCheckMinPrice(true); - companySettings.setUseRecycleBin(false); - companySettings.setUseCompanyAddress(true); - companySettings.setCompanyAddress("123@123.ru"); + final Boolean globalOperationNumbering = companySettings.getGlobalOperationNumbering(); + final Boolean checkShippingStock = companySettings.getCheckShippingStock(); + final Boolean checkMinPrice = companySettings.getCheckMinPrice(); + final Boolean useCompanyAddress = companySettings.getUseCompanyAddress(); + final Boolean useRecycleBin = companySettings.getUseRecycleBin(); + final String companyAddress = companySettings.getCompanyAddress(); + final String testAddress = "123@123.ru"; + companySettings.setGlobalOperationNumbering(!globalOperationNumbering); + companySettings.setCheckShippingStock(!checkShippingStock); + companySettings.setCheckMinPrice(!checkMinPrice); + companySettings.setUseRecycleBin(!useRecycleBin); + companySettings.setUseCompanyAddress(!useCompanyAddress); + companySettings.setCompanyAddress(testAddress); api.entity().companysettings().update(companySettings); companySettings = api.entity().companysettings().get(); - assertEquals(true, companySettings.getGlobalOperationNumbering()); - assertEquals(true, companySettings.getCheckShippingStock()); - assertEquals(true, companySettings.getCheckMinPrice()); - assertEquals(false, companySettings.getUseRecycleBin()); - assertEquals(true, companySettings.getUseCompanyAddress()); - assertEquals("123@123.ru", companySettings.getCompanyAddress()); + assertEquals(!globalOperationNumbering, companySettings.getGlobalOperationNumbering()); + assertEquals(!checkShippingStock, companySettings.getCheckShippingStock()); + assertEquals(!checkMinPrice, companySettings.getCheckMinPrice()); + assertEquals(!useRecycleBin, companySettings.getUseRecycleBin()); + assertEquals(!useCompanyAddress, companySettings.getUseCompanyAddress()); + assertEquals(testAddress, companySettings.getCompanyAddress()); //revert changes - companySettings.setGlobalOperationNumbering(false); - companySettings.setCheckShippingStock(false); - companySettings.setCheckMinPrice(false); - companySettings.setUseRecycleBin(true); - companySettings.setUseCompanyAddress(false); - companySettings.setCompanyAddress(null); + companySettings.setGlobalOperationNumbering(globalOperationNumbering); + companySettings.setCheckShippingStock(checkShippingStock); + companySettings.setCheckMinPrice(checkMinPrice); + companySettings.setUseRecycleBin(useRecycleBin); + companySettings.setUseCompanyAddress(useCompanyAddress); + companySettings.setCompanyAddress(companyAddress); api.entity().companysettings().update(companySettings); } diff --git a/src/test/resources/methods.csv b/src/test/resources/methods.csv index 31f7b844..0de8287a 100644 --- a/src/test/resources/methods.csv +++ b/src/test/resources/methods.csv @@ -81,8 +81,7 @@ POST;https://test.moysklad/api/remap/1.2/entity/customerorder/ID/export/;String, GET;https://test.moysklad/api/remap/1.2/entity/purchaseorder/ENTITY_ID;MetaEntity,ApiParam[];PurchaseOrder PUT;https://test.moysklad/api/remap/1.2/entity/loss/ID/positions/ID;String,String,DocumentPosition;void GET;https://test.moysklad/api/remap/1.2/context/companysettings/;ApiParam[];CompanySettings -PUT;https://test.moysklad/api/remap/1.2/context/companysettings/ENTITY_ID;MetaEntity;void -PUT;https://test.moysklad/api/remap/1.2/context/companysettings/ID;String,MetaEntity;void +PUT;https://test.moysklad/api/remap/1.2/context/companysettings/;MetaEntity;void POST;https://test.moysklad/api/remap/1.2/entity/salesreturn/ID/export/;String,ExportRequest,File;void POST;https://test.moysklad/api/remap/1.2/entity/inventory/ID/export/;String,ExportRequest,File,boolean;void POST;https://test.moysklad/api/remap/1.2/entity/retaildrawercashout/ID/export/;String,Template,File,boolean;void From 651fadf362fb3f7f7acbe24b0ba875ded6efb5d9 Mon Sep 17 00:00:00 2001 From: strubitsyn Date: Tue, 14 Jul 2020 10:59:38 +0300 Subject: [PATCH 04/14] MC-34267 mass create-update-delete --- .../api/clients/BonusTransactionClient.java | 1 + .../com/lognex/api/clients/BundleClient.java | 1 + .../api/clients/CharacteristicClient.java | 50 +++++++ .../lognex/api/clients/ConsignmentClient.java | 3 +- .../lognex/api/clients/ContractClient.java | 1 + .../api/clients/CounterpartyClient.java | 1 + .../com/lognex/api/clients/CountryClient.java | 3 +- .../lognex/api/clients/CurrencyClient.java | 3 +- .../lognex/api/clients/EmployeeClient.java | 3 +- .../lognex/api/clients/ExpenseItemClient.java | 3 +- .../api/clients/OrganizationClient.java | 3 +- .../com/lognex/api/clients/ProductClient.java | 1 + .../api/clients/ProductFolderClient.java | 3 +- .../com/lognex/api/clients/ProjectClient.java | 1 + .../lognex/api/clients/RetailStoreClient.java | 3 +- .../com/lognex/api/clients/ServiceClient.java | 1 + .../com/lognex/api/clients/StateClient.java | 6 +- .../com/lognex/api/clients/StoreClient.java | 3 +- .../com/lognex/api/clients/TaskClient.java | 1 + .../com/lognex/api/clients/UomClient.java | 3 +- .../com/lognex/api/clients/VariantClient.java | 5 + .../com/lognex/api/clients/WebHookClient.java | 3 +- .../api/clients/documents/CashInClient.java | 1 + .../api/clients/documents/CashOutClient.java | 1 + .../documents/CommissionReportInClient.java | 1 + .../documents/CommissionReportOutClient.java | 1 + .../documents/CustomerOrderClient.java | 1 + .../api/clients/documents/DemandClient.java | 1 + .../api/clients/documents/EnterClient.java | 1 + .../clients/documents/FactureInClient.java | 1 + .../clients/documents/FactureOutClient.java | 1 + .../documents/InternalOrderClient.java | 1 + .../clients/documents/InventoryClient.java | 1 + .../clients/documents/InvoiceInClient.java | 1 + .../clients/documents/InvoiceOutClient.java | 1 + .../api/clients/documents/LossClient.java | 1 + .../api/clients/documents/MoveClient.java | 1 + .../clients/documents/PaymentInClient.java | 1 + .../clients/documents/PaymentOutClient.java | 1 + .../clients/documents/PricelistClient.java | 1 + .../clients/documents/ProcessingClient.java | 1 + .../documents/ProcessingOrderClient.java | 1 + .../documents/ProcessingPlanClient.java | 1 + .../documents/PurchaseOrderClient.java | 1 + .../documents/PurchaseReturnClient.java | 1 + .../clients/documents/RetailDemandClient.java | 1 + .../documents/RetailDrawerCashInClient.java | 1 + .../documents/RetailDrawerCashOutClient.java | 1 + .../documents/RetailSalesReturnClient.java | 1 + .../clients/documents/SalesReturnClient.java | 1 + .../api/clients/documents/SupplyClient.java | 1 + .../MassCreateUpdateDeleteEndpoint.java | 25 ++++ .../endpoints/MassCreateUpdateEndpoint.java | 24 ++++ .../lognex/api/entities/products/Variant.java | 5 + .../responses/CharacteristicListEntity.java | 25 ++++ .../api/responses/MassDeleteResponse.java | 10 ++ .../lognex/api/utils/HttpRequestExecutor.java | 2 +- .../api/entities/BonusTransactionTest.java | 6 + .../api/entities/CharacteristicTest.java | 60 +++++++++ .../lognex/api/entities/ConsignmentTest.java | 5 +- .../com/lognex/api/entities/EmployeeTest.java | 5 +- .../entities/EntityGetUpdateDeleteTest.java | 54 +++++++- .../com/lognex/api/entities/TaskTest.java | 5 +- .../entities/documents/RetailDemandTest.java | 6 + .../documents/RetailDrawerCashInTest.java | 6 + .../documents/RetailDrawerCashOutTest.java | 6 + .../com/lognex/api/utils/MockHttpClient.java | 32 +++-- src/test/resources/methods.csv | 122 +++++++++++++++++- 68 files changed, 491 insertions(+), 38 deletions(-) create mode 100644 src/main/java/com/lognex/api/clients/CharacteristicClient.java create mode 100644 src/main/java/com/lognex/api/clients/endpoints/MassCreateUpdateDeleteEndpoint.java create mode 100644 src/main/java/com/lognex/api/clients/endpoints/MassCreateUpdateEndpoint.java create mode 100644 src/main/java/com/lognex/api/responses/CharacteristicListEntity.java create mode 100644 src/main/java/com/lognex/api/responses/MassDeleteResponse.java create mode 100644 src/test/java/com/lognex/api/entities/CharacteristicTest.java diff --git a/src/main/java/com/lognex/api/clients/BonusTransactionClient.java b/src/main/java/com/lognex/api/clients/BonusTransactionClient.java index f45710c6..39ed046e 100644 --- a/src/main/java/com/lognex/api/clients/BonusTransactionClient.java +++ b/src/main/java/com/lognex/api/clients/BonusTransactionClient.java @@ -14,6 +14,7 @@ public final class BonusTransactionClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DeleteByIdEndpoint { public BonusTransactionClient(com.lognex.api.ApiClient api) { diff --git a/src/main/java/com/lognex/api/clients/BundleClient.java b/src/main/java/com/lognex/api/clients/BundleClient.java index 1f217038..f1b1bbc2 100644 --- a/src/main/java/com/lognex/api/clients/BundleClient.java +++ b/src/main/java/com/lognex/api/clients/BundleClient.java @@ -21,6 +21,7 @@ public final class BundleClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DeleteByIdEndpoint, HasImagesEndpoint { diff --git a/src/main/java/com/lognex/api/clients/CharacteristicClient.java b/src/main/java/com/lognex/api/clients/CharacteristicClient.java new file mode 100644 index 00000000..bda00184 --- /dev/null +++ b/src/main/java/com/lognex/api/clients/CharacteristicClient.java @@ -0,0 +1,50 @@ +package com.lognex.api.clients; + +import com.lognex.api.ApiClient; +import com.lognex.api.clients.endpoints.GetByIdEndpoint; +import com.lognex.api.entities.products.Variant; +import com.lognex.api.responses.CharacteristicListEntity; +import com.lognex.api.utils.ApiClientException; +import com.lognex.api.utils.HttpRequestExecutor; +import com.lognex.api.utils.params.ApiParam; + +import java.io.IOException; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public final class CharacteristicClient + extends EntityClientBase + implements + GetByIdEndpoint { + + public CharacteristicClient(ApiClient api) { + super(api, "/entity/variant/metadata/characteristics/"); + } + + public CharacteristicListEntity get(ApiParam... params) throws IOException, ApiClientException { + return HttpRequestExecutor. + path(api(), path()). + apiParams(params). + get(CharacteristicListEntity.class); + } + + public Variant.Characteristic create(String name) throws IOException, ApiClientException { + Variant.Characteristic characteristic = new Variant.Characteristic(); + characteristic.setName(name); + return HttpRequestExecutor. + path(api(), path()). + body(characteristic). + post(Variant.Characteristic.class); + } + + public List create(Collection names) throws IOException, ApiClientException { + List items = names.stream() + .map(Variant.Characteristic::new) + .collect(Collectors.toList()); + return HttpRequestExecutor. + path(api(), path()). + body(items). + postList(Variant.Characteristic.class); + } +} diff --git a/src/main/java/com/lognex/api/clients/ConsignmentClient.java b/src/main/java/com/lognex/api/clients/ConsignmentClient.java index 57ac2818..3b629767 100644 --- a/src/main/java/com/lognex/api/clients/ConsignmentClient.java +++ b/src/main/java/com/lognex/api/clients/ConsignmentClient.java @@ -15,7 +15,8 @@ public final class ConsignmentClient MetadataEndpoint, MetadataAttributeEndpoint, GetByIdEndpoint, - PutByIdEndpoint { + PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint { public ConsignmentClient(ApiClient api) { super(api, "/entity/consignment/"); diff --git a/src/main/java/com/lognex/api/clients/ContractClient.java b/src/main/java/com/lognex/api/clients/ContractClient.java index 624660d4..fdcb249e 100644 --- a/src/main/java/com/lognex/api/clients/ContractClient.java +++ b/src/main/java/com/lognex/api/clients/ContractClient.java @@ -11,6 +11,7 @@ public final class ContractClient implements GetListEndpoint, PostEndpoint, + MassCreateUpdateDeleteEndpoint, DeleteByIdEndpoint, DocumentMetadataEndpoint, MetadataAttributeEndpoint, diff --git a/src/main/java/com/lognex/api/clients/CounterpartyClient.java b/src/main/java/com/lognex/api/clients/CounterpartyClient.java index 8043b001..4a2c7ddb 100644 --- a/src/main/java/com/lognex/api/clients/CounterpartyClient.java +++ b/src/main/java/com/lognex/api/clients/CounterpartyClient.java @@ -25,6 +25,7 @@ public final class CounterpartyClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, HasStatesEndpoint { public CounterpartyClient(com.lognex.api.ApiClient api) { diff --git a/src/main/java/com/lognex/api/clients/CountryClient.java b/src/main/java/com/lognex/api/clients/CountryClient.java index a31aa388..f6b76e67 100644 --- a/src/main/java/com/lognex/api/clients/CountryClient.java +++ b/src/main/java/com/lognex/api/clients/CountryClient.java @@ -11,7 +11,8 @@ public final class CountryClient PostEndpoint, DeleteByIdEndpoint, GetByIdEndpoint, - PutByIdEndpoint { + PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint { public CountryClient(com.lognex.api.ApiClient api) { super(api, "/entity/country/"); diff --git a/src/main/java/com/lognex/api/clients/CurrencyClient.java b/src/main/java/com/lognex/api/clients/CurrencyClient.java index 9cb44524..579ee57d 100644 --- a/src/main/java/com/lognex/api/clients/CurrencyClient.java +++ b/src/main/java/com/lognex/api/clients/CurrencyClient.java @@ -11,7 +11,8 @@ public final class CurrencyClient PostEndpoint, DeleteByIdEndpoint, GetByIdEndpoint, - PutByIdEndpoint { + PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint { public CurrencyClient(com.lognex.api.ApiClient api) { super(api, "/entity/currency/"); diff --git a/src/main/java/com/lognex/api/clients/EmployeeClient.java b/src/main/java/com/lognex/api/clients/EmployeeClient.java index acc59ef0..740b56aa 100644 --- a/src/main/java/com/lognex/api/clients/EmployeeClient.java +++ b/src/main/java/com/lognex/api/clients/EmployeeClient.java @@ -14,7 +14,8 @@ public final class EmployeeClient MetadataEndpoint, MetadataAttributeEndpoint, GetByIdEndpoint, - PutByIdEndpoint { + PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint { public EmployeeClient(com.lognex.api.ApiClient api) { super(api, "/entity/employee/"); diff --git a/src/main/java/com/lognex/api/clients/ExpenseItemClient.java b/src/main/java/com/lognex/api/clients/ExpenseItemClient.java index d24083f3..86eb8ae9 100644 --- a/src/main/java/com/lognex/api/clients/ExpenseItemClient.java +++ b/src/main/java/com/lognex/api/clients/ExpenseItemClient.java @@ -11,7 +11,8 @@ public final class ExpenseItemClient PostEndpoint, DeleteByIdEndpoint, GetByIdEndpoint, - PutByIdEndpoint { + PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint { public ExpenseItemClient(com.lognex.api.ApiClient api) { super(api, "/entity/expenseitem/"); diff --git a/src/main/java/com/lognex/api/clients/OrganizationClient.java b/src/main/java/com/lognex/api/clients/OrganizationClient.java index f591c762..eb56ffb1 100644 --- a/src/main/java/com/lognex/api/clients/OrganizationClient.java +++ b/src/main/java/com/lognex/api/clients/OrganizationClient.java @@ -24,7 +24,8 @@ public final class OrganizationClient MetadataEndpoint, MetadataAttributeEndpoint, GetByIdEndpoint, - PutByIdEndpoint { + PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint { public OrganizationClient(ApiClient api) { super(api, "/entity/organization/"); diff --git a/src/main/java/com/lognex/api/clients/ProductClient.java b/src/main/java/com/lognex/api/clients/ProductClient.java index abb9fd15..55093d66 100644 --- a/src/main/java/com/lognex/api/clients/ProductClient.java +++ b/src/main/java/com/lognex/api/clients/ProductClient.java @@ -15,6 +15,7 @@ public final class ProductClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, HasImagesEndpoint { public ProductClient(com.lognex.api.ApiClient api) { diff --git a/src/main/java/com/lognex/api/clients/ProductFolderClient.java b/src/main/java/com/lognex/api/clients/ProductFolderClient.java index cdea8557..5f48cddf 100644 --- a/src/main/java/com/lognex/api/clients/ProductFolderClient.java +++ b/src/main/java/com/lognex/api/clients/ProductFolderClient.java @@ -14,7 +14,8 @@ public final class ProductFolderClient MetadataEndpoint, MetadataAttributeEndpoint, GetByIdEndpoint, - PutByIdEndpoint { + PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint { public ProductFolderClient(com.lognex.api.ApiClient api) { super(api, "/entity/productfolder/"); diff --git a/src/main/java/com/lognex/api/clients/ProjectClient.java b/src/main/java/com/lognex/api/clients/ProjectClient.java index ae8bd096..82a6b006 100644 --- a/src/main/java/com/lognex/api/clients/ProjectClient.java +++ b/src/main/java/com/lognex/api/clients/ProjectClient.java @@ -14,6 +14,7 @@ public final class ProjectClient MetadataEndpoint, MetadataAttributeEndpoint, GetByIdEndpoint, + MassCreateUpdateDeleteEndpoint, PutByIdEndpoint { public ProjectClient(com.lognex.api.ApiClient api) { diff --git a/src/main/java/com/lognex/api/clients/RetailStoreClient.java b/src/main/java/com/lognex/api/clients/RetailStoreClient.java index 12132f96..9846f293 100644 --- a/src/main/java/com/lognex/api/clients/RetailStoreClient.java +++ b/src/main/java/com/lognex/api/clients/RetailStoreClient.java @@ -18,7 +18,8 @@ public final class RetailStoreClient PostEndpoint, DeleteByIdEndpoint, GetByIdEndpoint, - PutByIdEndpoint { + PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint { public RetailStoreClient(com.lognex.api.ApiClient api) { super(api, "/entity/retailstore/"); diff --git a/src/main/java/com/lognex/api/clients/ServiceClient.java b/src/main/java/com/lognex/api/clients/ServiceClient.java index 59717a91..b7e5febf 100644 --- a/src/main/java/com/lognex/api/clients/ServiceClient.java +++ b/src/main/java/com/lognex/api/clients/ServiceClient.java @@ -15,6 +15,7 @@ public final class ServiceClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, GetBySyncIdEndpoint { public ServiceClient(com.lognex.api.ApiClient api) { diff --git a/src/main/java/com/lognex/api/clients/StateClient.java b/src/main/java/com/lognex/api/clients/StateClient.java index d319930e..32e1fd33 100644 --- a/src/main/java/com/lognex/api/clients/StateClient.java +++ b/src/main/java/com/lognex/api/clients/StateClient.java @@ -1,10 +1,7 @@ package com.lognex.api.clients; import com.lognex.api.ApiClient; -import com.lognex.api.clients.endpoints.DeleteByIdEndpoint; -import com.lognex.api.clients.endpoints.GetByIdEndpoint; -import com.lognex.api.clients.endpoints.PostEndpoint; -import com.lognex.api.clients.endpoints.PutByIdEndpoint; +import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.State; @@ -14,6 +11,7 @@ public class StateClient GetByIdEndpoint, PostEndpoint, PutByIdEndpoint, + MassCreateUpdateEndpoint, DeleteByIdEndpoint { diff --git a/src/main/java/com/lognex/api/clients/StoreClient.java b/src/main/java/com/lognex/api/clients/StoreClient.java index f5bca856..796481fe 100644 --- a/src/main/java/com/lognex/api/clients/StoreClient.java +++ b/src/main/java/com/lognex/api/clients/StoreClient.java @@ -15,7 +15,8 @@ public final class StoreClient MetadataEndpoint, MetadataAttributeEndpoint, GetByIdEndpoint, - PutByIdEndpoint { + PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint { public StoreClient(ApiClient api) { super(api, "/entity/store/"); diff --git a/src/main/java/com/lognex/api/clients/TaskClient.java b/src/main/java/com/lognex/api/clients/TaskClient.java index c56179d5..c99990e4 100644 --- a/src/main/java/com/lognex/api/clients/TaskClient.java +++ b/src/main/java/com/lognex/api/clients/TaskClient.java @@ -18,6 +18,7 @@ public final class TaskClient implements GetListEndpoint, GetByIdEndpoint, + MassCreateUpdateDeleteEndpoint, PostEndpoint, PutByIdEndpoint, DeleteByIdEndpoint { diff --git a/src/main/java/com/lognex/api/clients/UomClient.java b/src/main/java/com/lognex/api/clients/UomClient.java index 8dbfc944..05fe94be 100644 --- a/src/main/java/com/lognex/api/clients/UomClient.java +++ b/src/main/java/com/lognex/api/clients/UomClient.java @@ -11,7 +11,8 @@ public final class UomClient PostEndpoint, DeleteByIdEndpoint, GetByIdEndpoint, - PutByIdEndpoint { + PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint { public UomClient(com.lognex.api.ApiClient api) { super(api, "/entity/uom/"); diff --git a/src/main/java/com/lognex/api/clients/VariantClient.java b/src/main/java/com/lognex/api/clients/VariantClient.java index ee37e988..9807a950 100644 --- a/src/main/java/com/lognex/api/clients/VariantClient.java +++ b/src/main/java/com/lognex/api/clients/VariantClient.java @@ -15,12 +15,17 @@ public final class VariantClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, HasImagesEndpoint { public VariantClient(com.lognex.api.ApiClient api) { super(api, "/entity/variant/"); } + public CharacteristicClient characteristics() { + return new CharacteristicClient(api()); + } + @Override public Class entityClass() { return Variant.class; diff --git a/src/main/java/com/lognex/api/clients/WebHookClient.java b/src/main/java/com/lognex/api/clients/WebHookClient.java index f7fcda64..c490bf80 100644 --- a/src/main/java/com/lognex/api/clients/WebHookClient.java +++ b/src/main/java/com/lognex/api/clients/WebHookClient.java @@ -11,7 +11,8 @@ public final class WebHookClient PostEndpoint, DeleteByIdEndpoint, GetByIdEndpoint, - PutByIdEndpoint { + PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint { public WebHookClient(com.lognex.api.ApiClient api) { super(api, "/entity/webhook/"); diff --git a/src/main/java/com/lognex/api/clients/documents/CashInClient.java b/src/main/java/com/lognex/api/clients/documents/CashInClient.java index 1920ec1a..335fcbff 100644 --- a/src/main/java/com/lognex/api/clients/documents/CashInClient.java +++ b/src/main/java/com/lognex/api/clients/documents/CashInClient.java @@ -18,6 +18,7 @@ public final class CashInClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/CashOutClient.java b/src/main/java/com/lognex/api/clients/documents/CashOutClient.java index 6bfe6f77..049aafea 100644 --- a/src/main/java/com/lognex/api/clients/documents/CashOutClient.java +++ b/src/main/java/com/lognex/api/clients/documents/CashOutClient.java @@ -18,6 +18,7 @@ public final class CashOutClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/CommissionReportInClient.java b/src/main/java/com/lognex/api/clients/documents/CommissionReportInClient.java index 9162db91..51918352 100644 --- a/src/main/java/com/lognex/api/clients/documents/CommissionReportInClient.java +++ b/src/main/java/com/lognex/api/clients/documents/CommissionReportInClient.java @@ -17,6 +17,7 @@ public final class CommissionReportInClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/CommissionReportOutClient.java b/src/main/java/com/lognex/api/clients/documents/CommissionReportOutClient.java index f7c21fc4..9a317dc4 100644 --- a/src/main/java/com/lognex/api/clients/documents/CommissionReportOutClient.java +++ b/src/main/java/com/lognex/api/clients/documents/CommissionReportOutClient.java @@ -17,6 +17,7 @@ public final class CommissionReportOutClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/CustomerOrderClient.java b/src/main/java/com/lognex/api/clients/documents/CustomerOrderClient.java index 779eba82..8b931122 100644 --- a/src/main/java/com/lognex/api/clients/documents/CustomerOrderClient.java +++ b/src/main/java/com/lognex/api/clients/documents/CustomerOrderClient.java @@ -16,6 +16,7 @@ public final class CustomerOrderClient DocumentMetadataEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/DemandClient.java b/src/main/java/com/lognex/api/clients/documents/DemandClient.java index b9342a9e..d8b07853 100644 --- a/src/main/java/com/lognex/api/clients/documents/DemandClient.java +++ b/src/main/java/com/lognex/api/clients/documents/DemandClient.java @@ -18,6 +18,7 @@ public final class DemandClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/EnterClient.java b/src/main/java/com/lognex/api/clients/documents/EnterClient.java index 7525502e..e46dafb5 100644 --- a/src/main/java/com/lognex/api/clients/documents/EnterClient.java +++ b/src/main/java/com/lognex/api/clients/documents/EnterClient.java @@ -17,6 +17,7 @@ public final class EnterClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/FactureInClient.java b/src/main/java/com/lognex/api/clients/documents/FactureInClient.java index f7251847..f1101f53 100644 --- a/src/main/java/com/lognex/api/clients/documents/FactureInClient.java +++ b/src/main/java/com/lognex/api/clients/documents/FactureInClient.java @@ -18,6 +18,7 @@ public final class FactureInClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/FactureOutClient.java b/src/main/java/com/lognex/api/clients/documents/FactureOutClient.java index dfb89f10..78ecab4e 100644 --- a/src/main/java/com/lognex/api/clients/documents/FactureOutClient.java +++ b/src/main/java/com/lognex/api/clients/documents/FactureOutClient.java @@ -17,6 +17,7 @@ public final class FactureOutClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DeleteByIdEndpoint, ExportEndpoint, PublicationEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/InternalOrderClient.java b/src/main/java/com/lognex/api/clients/documents/InternalOrderClient.java index 2966884c..fbac44d1 100644 --- a/src/main/java/com/lognex/api/clients/documents/InternalOrderClient.java +++ b/src/main/java/com/lognex/api/clients/documents/InternalOrderClient.java @@ -18,6 +18,7 @@ public final class InternalOrderClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/InventoryClient.java b/src/main/java/com/lognex/api/clients/documents/InventoryClient.java index 6300b46a..dbe8102f 100644 --- a/src/main/java/com/lognex/api/clients/documents/InventoryClient.java +++ b/src/main/java/com/lognex/api/clients/documents/InventoryClient.java @@ -17,6 +17,7 @@ public final class InventoryClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/InvoiceInClient.java b/src/main/java/com/lognex/api/clients/documents/InvoiceInClient.java index 393bc5da..4955566e 100644 --- a/src/main/java/com/lognex/api/clients/documents/InvoiceInClient.java +++ b/src/main/java/com/lognex/api/clients/documents/InvoiceInClient.java @@ -17,6 +17,7 @@ public final class InvoiceInClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/InvoiceOutClient.java b/src/main/java/com/lognex/api/clients/documents/InvoiceOutClient.java index 296c4fc3..db0c4a93 100644 --- a/src/main/java/com/lognex/api/clients/documents/InvoiceOutClient.java +++ b/src/main/java/com/lognex/api/clients/documents/InvoiceOutClient.java @@ -17,6 +17,7 @@ public final class InvoiceOutClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/LossClient.java b/src/main/java/com/lognex/api/clients/documents/LossClient.java index caa85da4..e93c3918 100644 --- a/src/main/java/com/lognex/api/clients/documents/LossClient.java +++ b/src/main/java/com/lognex/api/clients/documents/LossClient.java @@ -18,6 +18,7 @@ public final class LossClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/MoveClient.java b/src/main/java/com/lognex/api/clients/documents/MoveClient.java index 2b599315..3b03bd88 100644 --- a/src/main/java/com/lognex/api/clients/documents/MoveClient.java +++ b/src/main/java/com/lognex/api/clients/documents/MoveClient.java @@ -18,6 +18,7 @@ public final class MoveClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/PaymentInClient.java b/src/main/java/com/lognex/api/clients/documents/PaymentInClient.java index 9deadd9f..efb5fbbf 100644 --- a/src/main/java/com/lognex/api/clients/documents/PaymentInClient.java +++ b/src/main/java/com/lognex/api/clients/documents/PaymentInClient.java @@ -18,6 +18,7 @@ public final class PaymentInClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/PaymentOutClient.java b/src/main/java/com/lognex/api/clients/documents/PaymentOutClient.java index 377393ab..18d2d1fb 100644 --- a/src/main/java/com/lognex/api/clients/documents/PaymentOutClient.java +++ b/src/main/java/com/lognex/api/clients/documents/PaymentOutClient.java @@ -18,6 +18,7 @@ public final class PaymentOutClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/PricelistClient.java b/src/main/java/com/lognex/api/clients/documents/PricelistClient.java index 304d84fc..8f30a00f 100644 --- a/src/main/java/com/lognex/api/clients/documents/PricelistClient.java +++ b/src/main/java/com/lognex/api/clients/documents/PricelistClient.java @@ -27,6 +27,7 @@ public final class PricelistClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, ExportEndpoint, PublicationEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/ProcessingClient.java b/src/main/java/com/lognex/api/clients/documents/ProcessingClient.java index e87b7bd1..5042d68b 100644 --- a/src/main/java/com/lognex/api/clients/documents/ProcessingClient.java +++ b/src/main/java/com/lognex/api/clients/documents/ProcessingClient.java @@ -17,6 +17,7 @@ public final class ProcessingClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/ProcessingOrderClient.java b/src/main/java/com/lognex/api/clients/documents/ProcessingOrderClient.java index bd7e4a1b..070dd9ed 100644 --- a/src/main/java/com/lognex/api/clients/documents/ProcessingOrderClient.java +++ b/src/main/java/com/lognex/api/clients/documents/ProcessingOrderClient.java @@ -18,6 +18,7 @@ public final class ProcessingOrderClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/ProcessingPlanClient.java b/src/main/java/com/lognex/api/clients/documents/ProcessingPlanClient.java index 09153f56..93551566 100644 --- a/src/main/java/com/lognex/api/clients/documents/ProcessingPlanClient.java +++ b/src/main/java/com/lognex/api/clients/documents/ProcessingPlanClient.java @@ -14,6 +14,7 @@ public final class ProcessingPlanClient DeleteByIdEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, ExportEndpoint { public ProcessingPlanClient(ApiClient api) { diff --git a/src/main/java/com/lognex/api/clients/documents/PurchaseOrderClient.java b/src/main/java/com/lognex/api/clients/documents/PurchaseOrderClient.java index 6f960c23..73d935f4 100644 --- a/src/main/java/com/lognex/api/clients/documents/PurchaseOrderClient.java +++ b/src/main/java/com/lognex/api/clients/documents/PurchaseOrderClient.java @@ -18,6 +18,7 @@ public final class PurchaseOrderClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/PurchaseReturnClient.java b/src/main/java/com/lognex/api/clients/documents/PurchaseReturnClient.java index 2bc3b561..4f85ba77 100644 --- a/src/main/java/com/lognex/api/clients/documents/PurchaseReturnClient.java +++ b/src/main/java/com/lognex/api/clients/documents/PurchaseReturnClient.java @@ -18,6 +18,7 @@ public final class PurchaseReturnClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/RetailDemandClient.java b/src/main/java/com/lognex/api/clients/documents/RetailDemandClient.java index 311975b2..3dd4e406 100644 --- a/src/main/java/com/lognex/api/clients/documents/RetailDemandClient.java +++ b/src/main/java/com/lognex/api/clients/documents/RetailDemandClient.java @@ -17,6 +17,7 @@ public final class RetailDemandClient MetadataAttributeEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, ExportEndpoint, PublicationEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/RetailDrawerCashInClient.java b/src/main/java/com/lognex/api/clients/documents/RetailDrawerCashInClient.java index 07cfb9f6..06dfaf58 100644 --- a/src/main/java/com/lognex/api/clients/documents/RetailDrawerCashInClient.java +++ b/src/main/java/com/lognex/api/clients/documents/RetailDrawerCashInClient.java @@ -12,6 +12,7 @@ public final class RetailDrawerCashInClient implements GetListEndpoint, PostEndpoint, + MassCreateUpdateDeleteEndpoint, DeleteByIdEndpoint, DocumentMetadataEndpoint, MetadataAttributeEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/RetailDrawerCashOutClient.java b/src/main/java/com/lognex/api/clients/documents/RetailDrawerCashOutClient.java index 3986f944..6e4261fe 100644 --- a/src/main/java/com/lognex/api/clients/documents/RetailDrawerCashOutClient.java +++ b/src/main/java/com/lognex/api/clients/documents/RetailDrawerCashOutClient.java @@ -12,6 +12,7 @@ public final class RetailDrawerCashOutClient implements GetListEndpoint, PostEndpoint, + MassCreateUpdateDeleteEndpoint, DeleteByIdEndpoint, DocumentMetadataEndpoint, MetadataAttributeEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/RetailSalesReturnClient.java b/src/main/java/com/lognex/api/clients/documents/RetailSalesReturnClient.java index d18cd8e7..9a8f038f 100644 --- a/src/main/java/com/lognex/api/clients/documents/RetailSalesReturnClient.java +++ b/src/main/java/com/lognex/api/clients/documents/RetailSalesReturnClient.java @@ -12,6 +12,7 @@ public final class RetailSalesReturnClient implements GetListEndpoint, PostEndpoint, + MassCreateUpdateDeleteEndpoint, DeleteByIdEndpoint, DocumentMetadataEndpoint, MetadataAttributeEndpoint, diff --git a/src/main/java/com/lognex/api/clients/documents/SalesReturnClient.java b/src/main/java/com/lognex/api/clients/documents/SalesReturnClient.java index 0eabca8e..d579a131 100644 --- a/src/main/java/com/lognex/api/clients/documents/SalesReturnClient.java +++ b/src/main/java/com/lognex/api/clients/documents/SalesReturnClient.java @@ -18,6 +18,7 @@ public final class SalesReturnClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint { diff --git a/src/main/java/com/lognex/api/clients/documents/SupplyClient.java b/src/main/java/com/lognex/api/clients/documents/SupplyClient.java index a887aff5..13ef57f9 100644 --- a/src/main/java/com/lognex/api/clients/documents/SupplyClient.java +++ b/src/main/java/com/lognex/api/clients/documents/SupplyClient.java @@ -18,6 +18,7 @@ public final class SupplyClient DocumentNewEndpoint, GetByIdEndpoint, PutByIdEndpoint, + MassCreateUpdateDeleteEndpoint, DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint { diff --git a/src/main/java/com/lognex/api/clients/endpoints/MassCreateUpdateDeleteEndpoint.java b/src/main/java/com/lognex/api/clients/endpoints/MassCreateUpdateDeleteEndpoint.java new file mode 100644 index 00000000..4764236c --- /dev/null +++ b/src/main/java/com/lognex/api/clients/endpoints/MassCreateUpdateDeleteEndpoint.java @@ -0,0 +1,25 @@ +package com.lognex.api.clients.endpoints; + +import com.lognex.api.entities.MetaEntity; +import com.lognex.api.responses.MassDeleteResponse; +import com.lognex.api.utils.ApiClientException; +import com.lognex.api.utils.HttpRequestExecutor; +import com.lognex.api.utils.MetaHrefUtils; + +import java.io.IOException; +import java.util.List; + +import static com.lognex.api.utils.Constants.API_PATH; + +public interface MassCreateUpdateDeleteEndpoint extends MassCreateUpdateEndpoint { + + @ApiEndpoint + default List delete(List entities) throws IOException, ApiClientException { + entities.forEach(newEntity -> MetaHrefUtils.fillMeta(newEntity, api().getHost() + API_PATH)); + + return HttpRequestExecutor + .path(api(), path() + "delete") + .body(entities) + .postList(MassDeleteResponse.class); + } +} diff --git a/src/main/java/com/lognex/api/clients/endpoints/MassCreateUpdateEndpoint.java b/src/main/java/com/lognex/api/clients/endpoints/MassCreateUpdateEndpoint.java new file mode 100644 index 00000000..c29ea3ae --- /dev/null +++ b/src/main/java/com/lognex/api/clients/endpoints/MassCreateUpdateEndpoint.java @@ -0,0 +1,24 @@ +package com.lognex.api.clients.endpoints; + +import com.lognex.api.entities.MetaEntity; +import com.lognex.api.utils.ApiClientException; +import com.lognex.api.utils.HttpRequestExecutor; +import com.lognex.api.utils.MetaHrefUtils; + +import java.io.IOException; +import java.util.List; + +import static com.lognex.api.utils.Constants.API_PATH; + +public interface MassCreateUpdateEndpoint extends Endpoint { + + @ApiEndpoint + default List createOrUpdate(List entities) throws IOException, ApiClientException { + entities.forEach(newEntity -> MetaHrefUtils.fillMeta(newEntity, api().getHost() + API_PATH)); + + return HttpRequestExecutor. + path(api(), path()). + body(entities). + postList((Class) entityClass()); + } +} diff --git a/src/main/java/com/lognex/api/entities/products/Variant.java b/src/main/java/com/lognex/api/entities/products/Variant.java index 1927ab90..e6c28e3a 100644 --- a/src/main/java/com/lognex/api/entities/products/Variant.java +++ b/src/main/java/com/lognex/api/entities/products/Variant.java @@ -96,6 +96,11 @@ public class Variant extends Assortment implements SingleProductMarker, Consignm @NoArgsConstructor @EqualsAndHashCode(callSuper = true) public static class Characteristic extends MetaEntity { + + public Characteristic(String name) { + this.setName(name); + } + /** * Тип характеристики */ diff --git a/src/main/java/com/lognex/api/responses/CharacteristicListEntity.java b/src/main/java/com/lognex/api/responses/CharacteristicListEntity.java new file mode 100644 index 00000000..3a363165 --- /dev/null +++ b/src/main/java/com/lognex/api/responses/CharacteristicListEntity.java @@ -0,0 +1,25 @@ +package com.lognex.api.responses; + +import com.lognex.api.entities.Context; +import com.lognex.api.entities.Fetchable; +import com.lognex.api.entities.MetaEntity; +import com.lognex.api.entities.products.Variant; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +/** + * Список характеристик + */ + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public final class CharacteristicListEntity extends MetaEntity implements Fetchable { + private Context context; + private List characteristics; +} diff --git a/src/main/java/com/lognex/api/responses/MassDeleteResponse.java b/src/main/java/com/lognex/api/responses/MassDeleteResponse.java new file mode 100644 index 00000000..70a0216b --- /dev/null +++ b/src/main/java/com/lognex/api/responses/MassDeleteResponse.java @@ -0,0 +1,10 @@ +package com.lognex.api.responses; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class MassDeleteResponse { + String info; +} diff --git a/src/main/java/com/lognex/api/utils/HttpRequestExecutor.java b/src/main/java/com/lognex/api/utils/HttpRequestExecutor.java index cd3f9357..9a96009c 100644 --- a/src/main/java/com/lognex/api/utils/HttpRequestExecutor.java +++ b/src/main/java/com/lognex/api/utils/HttpRequestExecutor.java @@ -372,7 +372,7 @@ public T post(Class cl) throws IOException, ApiClientException { * @throws IOException когда возникла сетевая ошибка * @throws ApiClientException когда возникла ошибка API */ - public List postList(Class cl) throws IOException, ApiClientException { + public List postList(Class cl) throws IOException, ApiClientException { return gson.fromJson(post(), TypeToken.getParameterized(List.class, cl).getType()); } diff --git a/src/test/java/com/lognex/api/entities/BonusTransactionTest.java b/src/test/java/com/lognex/api/entities/BonusTransactionTest.java index 7a440d6f..99179b09 100644 --- a/src/test/java/com/lognex/api/entities/BonusTransactionTest.java +++ b/src/test/java/com/lognex/api/entities/BonusTransactionTest.java @@ -70,6 +70,12 @@ public void deleteTest() throws IOException, ApiClientException { public void getTest() throws IOException, ApiClientException { } + @Ignore + @Test + @Override + public void massCreateUpdateDelete() { + } + @Override protected EntityClientBase entityClient() { return api.entity().bonustransaction(); diff --git a/src/test/java/com/lognex/api/entities/CharacteristicTest.java b/src/test/java/com/lognex/api/entities/CharacteristicTest.java new file mode 100644 index 00000000..589352f0 --- /dev/null +++ b/src/test/java/com/lognex/api/entities/CharacteristicTest.java @@ -0,0 +1,60 @@ +package com.lognex.api.entities; + +import com.lognex.api.clients.EntityClientBase; +import com.lognex.api.entities.products.Variant; +import com.lognex.api.utils.ApiClientException; +import org.junit.Test; + +import java.io.IOException; +import java.util.*; +import java.util.stream.Collectors; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class CharacteristicTest extends EntityTestBase { + @Test + public void testGet() throws IOException, ApiClientException { + List existedCharacteristics = + api.entity().variant().characteristics().get().getCharacteristics(); + Set existedIDs = existedCharacteristics == null ? Collections.emptySet() : + existedCharacteristics.stream() + .map(MetaEntity::getId) + .collect(Collectors.toSet()); + + String name1 = simpleEntityManager.randomString(); + Variant.Characteristic characteristic1 = api.entity().variant().characteristics().create(name1); + assertNotNull(characteristic1.getId()); + assertEquals(name1, characteristic1.getName()); + + String name2 = simpleEntityManager.randomString(); + Variant.Characteristic characteristic2 = api.entity().variant().characteristics().create(name2); + + Set actualCharacteristics = api.entity().variant().characteristics().get() + .getCharacteristics().stream() + .filter(ch -> !existedIDs.contains(ch.getId())) //в базе могли быть характеристики до теста + .map(MetaEntity::getName) + .collect(Collectors.toSet()); + Set expectedCharacteristics = new HashSet<>(Arrays.asList(characteristic1.getName(), characteristic2.getName())); + assertEquals(expectedCharacteristics, actualCharacteristics); + } + + @Test + public void testMassCreate() throws IOException, ApiClientException { + Set names = new HashSet<>(Arrays.asList(simpleEntityManager.randomString(), simpleEntityManager.randomString())); + Set received = api.entity().variant().characteristics().create(names).stream() + .map(MetaEntity::getName) + .collect(Collectors.toSet()); + assertEquals(names, received); + } + + @Override + protected EntityClientBase entityClient() { + return api.entity().variant().characteristics(); + } + + @Override + protected Class entityClass() { + return Variant.Characteristic.class; + } +} diff --git a/src/test/java/com/lognex/api/entities/ConsignmentTest.java b/src/test/java/com/lognex/api/entities/ConsignmentTest.java index 962ffbca..97528160 100644 --- a/src/test/java/com/lognex/api/entities/ConsignmentTest.java +++ b/src/test/java/com/lognex/api/entities/ConsignmentTest.java @@ -37,9 +37,8 @@ public void createTest() throws IOException, ApiClientException { } @Override - @Test - public void putTest() throws IOException, ApiClientException { - doPutTest("Label"); + protected String getFieldNameToUpdate() { + return "Label"; } @Override diff --git a/src/test/java/com/lognex/api/entities/EmployeeTest.java b/src/test/java/com/lognex/api/entities/EmployeeTest.java index 81242e5b..ae00988e 100644 --- a/src/test/java/com/lognex/api/entities/EmployeeTest.java +++ b/src/test/java/com/lognex/api/entities/EmployeeTest.java @@ -38,9 +38,8 @@ public void createTest() throws IOException, ApiClientException { } @Override - @Test - public void putTest() throws IOException, ApiClientException { - doPutTest("LastName"); + protected String getFieldNameToUpdate() { + return "LastName"; } @Test diff --git a/src/test/java/com/lognex/api/entities/EntityGetUpdateDeleteTest.java b/src/test/java/com/lognex/api/entities/EntityGetUpdateDeleteTest.java index c45daf27..ac9b7498 100644 --- a/src/test/java/com/lognex/api/entities/EntityGetUpdateDeleteTest.java +++ b/src/test/java/com/lognex/api/entities/EntityGetUpdateDeleteTest.java @@ -1,20 +1,30 @@ package com.lognex.api.entities; -import com.lognex.api.clients.endpoints.GetByIdEndpoint; -import com.lognex.api.clients.endpoints.PutByIdEndpoint; +import com.lognex.api.clients.endpoints.*; +import com.lognex.api.responses.MassDeleteResponse; import com.lognex.api.utils.ApiClientException; import org.junit.Test; import java.io.IOException; import java.lang.reflect.InvocationTargetException; +import java.util.Arrays; import java.util.Date; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; public abstract class EntityGetUpdateDeleteTest extends EntityGetDeleteTest { + protected String getFieldNameToUpdate() { + return "Name"; + } + @Test public void putTest() throws IOException, ApiClientException { - doPutTest("Name"); + doPutTest(getFieldNameToUpdate()); } @SuppressWarnings("unchecked") @@ -54,4 +64,42 @@ private Object updateField(String fieldName, MetaEntity entityToUpdate) { } protected abstract void putAsserts(MetaEntity originalEntity, MetaEntity updatedEntity, Object changedField); + + @Test + public void massCreateUpdateDelete() throws IOException, ApiClientException { + MetaEntity entity1 = simpleEntityManager.createSimple(entityClass(), true); + MetaEntity entity2 = simpleEntityManager.createSimple(entityClass(), true); + MetaEntity entity3 = simpleEntityManager.createSimple(entityClass(), true); + + // отсоединяем от базы, чтобы проверить массовое создание + Stream.of(entity1, entity2, entity3).forEach(entity -> entity.setId(null)); + + MassCreateUpdateEndpoint client = (MassCreateUpdateEndpoint) entityClient(); + + List created = client.createOrUpdate(Arrays.asList(entity1, entity2)); + assertEquals(2, created.size()); + assertEquals(2, created.stream().filter(p -> p.getId() != null).count()); + + Object newValue = updateField(getFieldNameToUpdate(), created.get(0)); + List updated = client.createOrUpdate(Arrays.asList(created.get(0), created.get(1), entity3)); + assertEquals(3, updated.size()); + assertEquals(3, updated.stream().filter(p -> p.getId() != null).count()); + + MetaEntity firstUpdated = updated.stream() + .filter(p -> p.getId().equals(created.get(0).getId())) + .findFirst() + .orElseThrow(() -> new AssertionError("Сущность не найдена среди обновлённых")); + entity1.setId(created.get(0).getId()); + putAsserts(entity1, firstUpdated, newValue); + + if (client instanceof MassCreateUpdateDeleteEndpoint) { + List deleteResult = ((MassCreateUpdateDeleteEndpoint)client).delete(updated); + assertEquals(updated.size(), deleteResult.size()); + Set entityIds = updated.stream().map(MetaEntity::getId).collect(Collectors.toSet()); + ((GetListEndpoint) entityClient()).get().getRows().stream() + .filter(item -> entityIds.contains(item.getId())) + .findAny() + .ifPresent(id -> fail("Сущность найдена после массового удаления")); + } + } } diff --git a/src/test/java/com/lognex/api/entities/TaskTest.java b/src/test/java/com/lognex/api/entities/TaskTest.java index 88d37acf..48322313 100644 --- a/src/test/java/com/lognex/api/entities/TaskTest.java +++ b/src/test/java/com/lognex/api/entities/TaskTest.java @@ -55,9 +55,8 @@ public void createTest() throws IOException, ApiClientException { } @Override - @Test - public void putTest() throws IOException, ApiClientException { - doPutTest("Description"); + protected String getFieldNameToUpdate() { + return "Description"; } @Override diff --git a/src/test/java/com/lognex/api/entities/documents/RetailDemandTest.java b/src/test/java/com/lognex/api/entities/documents/RetailDemandTest.java index a4510ce6..e5c36bb5 100644 --- a/src/test/java/com/lognex/api/entities/documents/RetailDemandTest.java +++ b/src/test/java/com/lognex/api/entities/documents/RetailDemandTest.java @@ -73,6 +73,12 @@ public void metadataTest() throws IOException, ApiClientException { assertFalse(response.getCreateShared()); } + @Ignore + @Test + @Override + public void massCreateUpdateDelete() { + } + @Override protected void getAsserts(MetaEntity originalEntity, MetaEntity retrievedEntity) { RetailDemand originalDemand = (RetailDemand) originalEntity; diff --git a/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashInTest.java b/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashInTest.java index 702c3114..8d571d01 100644 --- a/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashInTest.java +++ b/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashInTest.java @@ -67,6 +67,12 @@ public void deleteTest() throws IOException, ApiClientException { public void getTest() throws IOException, ApiClientException { } + @Ignore + @Test + @Override + public void massCreateUpdateDelete() throws IOException, ApiClientException { + } + @Override protected void getAsserts(MetaEntity originalEntity, MetaEntity retrievedEntity) { RetailDrawerCashIn originalRetailDrawerCashIn = (RetailDrawerCashIn) originalEntity; diff --git a/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashOutTest.java b/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashOutTest.java index e9386416..cf1585c1 100644 --- a/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashOutTest.java +++ b/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashOutTest.java @@ -67,6 +67,12 @@ public void deleteTest() throws IOException, ApiClientException { public void getTest() throws IOException, ApiClientException { } + @Ignore + @Test + @Override + public void massCreateUpdateDelete() throws IOException, ApiClientException { + } + @Override protected void getAsserts(MetaEntity originalEntity, MetaEntity retrievedEntity) { RetailDrawerCashOut originalRetailDrawerCashOut = (RetailDrawerCashOut) originalEntity; diff --git a/src/test/java/com/lognex/api/utils/MockHttpClient.java b/src/test/java/com/lognex/api/utils/MockHttpClient.java index 37fb7d98..94fe3a42 100644 --- a/src/test/java/com/lognex/api/utils/MockHttpClient.java +++ b/src/test/java/com/lognex/api/utils/MockHttpClient.java @@ -1,9 +1,11 @@ package com.lognex.api.utils; import lombok.Getter; +import org.apache.commons.io.IOUtils; import org.apache.http.*; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; @@ -12,7 +14,7 @@ import org.apache.http.protocol.HttpContext; import java.io.IOException; -import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.util.Locale; public class MockHttpClient extends CloseableHttpClient { @@ -61,16 +63,19 @@ public void setReasonPhrase(String reason) throws IllegalStateException { public HttpEntity getEntity() { HttpEntity se = null; try { - if (httpRequest.getRequestLine().getUri().contains("metadata/attributes/")) { + String uri = httpRequest.getRequestLine().getUri(); + if (looksLikeMassUpdate(httpRequest)) { + se = new StringEntity("[]"); + } else if (uri.contains("metadata/attributes/")) { se = new StringEntity("{\"type\":\"string\",\"value\":\"STRING\"}"); - } else if (httpRequest.getRequestLine().getUri().contains("positions") && + } else if (uri.contains("positions") && httpRequest.getRequestLine().getMethod().equals("POST") || - httpRequest.getRequestLine().getUri().endsWith("pricetype/")) { + uri.endsWith("pricetype/")) { se = new StringEntity("[]"); - } else if ((httpRequest.getRequestLine().getUri().endsWith("contactpersons") || - httpRequest.getRequestLine().getUri().endsWith("notes") || - httpRequest.getRequestLine().getUri().endsWith("accounts") || - httpRequest.getRequestLine().getUri().contains("images") + } else if ((uri.endsWith("contactpersons") || + uri.endsWith("notes") || + uri.endsWith("accounts") || + uri.contains("images") ) && httpRequest.getRequestLine().getMethod().equals("POST")) { se = new StringEntity("[{}]"); @@ -78,7 +83,7 @@ public HttpEntity getEntity() { else { se = new StringEntity("{}"); } - } catch (UnsupportedEncodingException e) { + } catch (IOException e) { e.printStackTrace(); } return se; @@ -189,6 +194,15 @@ public void setParams(HttpParams params) { return resp; } + private static boolean looksLikeMassUpdate(HttpRequest request) throws IOException { + if (request instanceof HttpPost) { + String content = IOUtils.toString(((HttpPost) request).getEntity().getContent(), StandardCharsets.UTF_8); + return "[]".equals(content); + } else { + return false; + } + } + @Override public void close() throws IOException { } diff --git a/src/test/resources/methods.csv b/src/test/resources/methods.csv index 4737c34e..d40ff788 100644 --- a/src/test/resources/methods.csv +++ b/src/test/resources/methods.csv @@ -1538,4 +1538,124 @@ GET;https://test.moysklad/api/remap/1.2/entity/organization/ENTITY_ID/accounts;O POST;https://test.moysklad/api/remap/1.2/entity/organization/ID/accounts;String,Collection;ArrayList POST;https://test.moysklad/api/remap/1.2/entity/retailstore/;MetaEntity;MetaEntity PUT;https://test.moysklad/api/remap/1.2/entity/retailstore/ID;String,MetaEntity;void -PUT;https://test.moysklad/api/remap/1.2/entity/retailstore/ENTITY_ID;MetaEntity;void \ No newline at end of file +PUT;https://test.moysklad/api/remap/1.2/entity/retailstore/ENTITY_ID;MetaEntity;void +POST;https://test.moysklad/api/remap/1.2/entity/cashout/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/productfolder/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/invoiceout/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/purchaseorder/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/purchasereturn/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/retaildrawercashout/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/bonustransaction/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/expenseitem/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/paymentin/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/employee/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/webhook/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/facturein/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/demand/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/loss/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/processingplan/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/cashin/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/paymentout/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/expenseitem/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/variant/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/country/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/processingorder/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/cashout/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/purchaseorder/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/webhook/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/organization/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/bundle/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/counterparty/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/processingplan/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/move/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/enter/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/factureout/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/demand/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/processingorder/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/variant/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/commissionreportout/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/customerorder/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/contract/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/retaildrawercashout/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/retaildrawercashin/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/inventory/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/loss/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/move/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/task/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/uom/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/counterparty/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/salesreturn/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/factureout/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/internalorder/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/supply/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/purchasereturn/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/bonustransaction/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/move/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/enter/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/retailsalesreturn/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/task/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/retailsalesreturn/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/purchasereturn/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/retaildrawercashin/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/pricelist/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/commissionreportin/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/project/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/retaildemand/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/paymentin/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/service/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/pricelist/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/demand/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/paymentout/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/productfolder/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/invoicein/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/inventory/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/project/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/commissionreportin/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/facturein/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/invoiceout/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/uom/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/retailstore/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/store/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/commissionreportin/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/organization/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/salesreturn/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/product/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/customerorder/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/consignment/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/enter/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/retaildemand/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/employee/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/retaildrawercashin/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/facturein/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/processing/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/processing/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/currency/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/internalorder/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/counterparty/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/store/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/country/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/retailstore/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/commissionreportout/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/cashin/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/service/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/contract/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/processingorder/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/invoicein/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/internalorder/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/loss/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/contract/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/paymentout/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/currency/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/commissionreportout/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/consignment/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/paymentin/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/supply/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/customerorder/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/purchaseorder/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/retaildrawercashout/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/bundle/delete;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/cashin/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/factureout/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/product/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/cashout/metadata/states/;List;ArrayList +POST;https://test.moysklad/api/remap/1.2/entity/processing/delete;List;ArrayList \ No newline at end of file From 2135f197c6cea09727a854ffa59d69388212528b Mon Sep 17 00:00:00 2001 From: strubitsyn Date: Thu, 16 Jul 2020 10:45:46 +0300 Subject: [PATCH 05/14] MC-34267 deattach from cache correctly --- .../api/responses/MassDeleteResponse.java | 11 ++- .../api/entities/BonusTransactionTest.java | 8 +- .../com/lognex/api/entities/BundleTest.java | 7 ++ .../entities/EntityGetUpdateDeleteTest.java | 85 ++++++++++++------- .../api/entities/SimpleEntityManager.java | 1 + .../com/lognex/api/entities/StateTest.java | 7 ++ .../com/lognex/api/entities/TaskTest.java | 6 ++ .../documents/ProcessingPlanTest.java | 6 ++ .../entities/documents/ProcessingTest.java | 6 ++ .../entities/documents/RetailDemandTest.java | 8 +- .../documents/RetailDrawerCashInTest.java | 8 +- .../documents/RetailDrawerCashOutTest.java | 8 +- 12 files changed, 121 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/lognex/api/responses/MassDeleteResponse.java b/src/main/java/com/lognex/api/responses/MassDeleteResponse.java index 70a0216b..a9f5274c 100644 --- a/src/main/java/com/lognex/api/responses/MassDeleteResponse.java +++ b/src/main/java/com/lognex/api/responses/MassDeleteResponse.java @@ -1,10 +1,15 @@ package com.lognex.api.responses; -import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; @Getter -@AllArgsConstructor +@Setter +@NoArgsConstructor public class MassDeleteResponse { - String info; + private String info; + private List errors; } diff --git a/src/test/java/com/lognex/api/entities/BonusTransactionTest.java b/src/test/java/com/lognex/api/entities/BonusTransactionTest.java index 99179b09..904aeaeb 100644 --- a/src/test/java/com/lognex/api/entities/BonusTransactionTest.java +++ b/src/test/java/com/lognex/api/entities/BonusTransactionTest.java @@ -73,7 +73,13 @@ public void getTest() throws IOException, ApiClientException { @Ignore @Test @Override - public void massCreateUpdateDelete() { + public void massUpdateTest() { + } + + @Ignore + @Test + @Override + public void massCreateDeleteTest() { } @Override diff --git a/src/test/java/com/lognex/api/entities/BundleTest.java b/src/test/java/com/lognex/api/entities/BundleTest.java index db0851fa..52aa234d 100644 --- a/src/test/java/com/lognex/api/entities/BundleTest.java +++ b/src/test/java/com/lognex/api/entities/BundleTest.java @@ -8,6 +8,7 @@ import com.lognex.api.responses.ListEntity; import com.lognex.api.utils.ApiClientException; import com.lognex.api.utils.TestUtils; +import org.junit.Ignore; import org.junit.Test; import java.io.IOException; @@ -75,6 +76,12 @@ public void paymentItemTypeTest() { }); } + @Test + @Ignore + @Override + public void massCreateDeleteTest() { + } + @Override protected void putAsserts(MetaEntity originalEntity, MetaEntity updatedEntity, Object changedField) { Bundle originalBundle = (Bundle) originalEntity; diff --git a/src/test/java/com/lognex/api/entities/EntityGetUpdateDeleteTest.java b/src/test/java/com/lognex/api/entities/EntityGetUpdateDeleteTest.java index ac9b7498..3a289bc0 100644 --- a/src/test/java/com/lognex/api/entities/EntityGetUpdateDeleteTest.java +++ b/src/test/java/com/lognex/api/entities/EntityGetUpdateDeleteTest.java @@ -1,5 +1,6 @@ package com.lognex.api.entities; +import com.lognex.api.clients.EntityClientBase; import com.lognex.api.clients.endpoints.*; import com.lognex.api.responses.MassDeleteResponse; import com.lognex.api.utils.ApiClientException; @@ -7,12 +8,8 @@ import java.io.IOException; import java.lang.reflect.InvocationTargetException; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; @@ -66,40 +63,62 @@ private Object updateField(String fieldName, MetaEntity entityToUpdate) { protected abstract void putAsserts(MetaEntity originalEntity, MetaEntity updatedEntity, Object changedField); @Test - public void massCreateUpdateDelete() throws IOException, ApiClientException { - MetaEntity entity1 = simpleEntityManager.createSimple(entityClass(), true); - MetaEntity entity2 = simpleEntityManager.createSimple(entityClass(), true); - MetaEntity entity3 = simpleEntityManager.createSimple(entityClass(), true); + public void massUpdateTest() throws IOException, ApiClientException { + List entities = Arrays.asList( + simpleEntityManager.createSimple(entityClass()), + simpleEntityManager.createSimple(entityClass()) + ); - // отсоединяем от базы, чтобы проверить массовое создание - Stream.of(entity1, entity2, entity3).forEach(entity -> entity.setId(null)); + MetaEntity origin1 = ((GetByIdEndpoint) entityClient()).get(entities.get(0).getId()); - MassCreateUpdateEndpoint client = (MassCreateUpdateEndpoint) entityClient(); - - List created = client.createOrUpdate(Arrays.asList(entity1, entity2)); - assertEquals(2, created.size()); - assertEquals(2, created.stream().filter(p -> p.getId() != null).count()); - - Object newValue = updateField(getFieldNameToUpdate(), created.get(0)); - List updated = client.createOrUpdate(Arrays.asList(created.get(0), created.get(1), entity3)); - assertEquals(3, updated.size()); - assertEquals(3, updated.stream().filter(p -> p.getId() != null).count()); + Object newValue = updateField(getFieldNameToUpdate(), entities.get(0)); + List updated = ((MassCreateUpdateEndpoint) entityClient()).createOrUpdate(entities); + assertEquals(entities.size(), updated.size()); + assertEquals(entities.size(), updated.stream().filter(p -> p.getId() != null).count()); MetaEntity firstUpdated = updated.stream() - .filter(p -> p.getId().equals(created.get(0).getId())) + .filter(p -> p.getId().equals(origin1.getId())) .findFirst() .orElseThrow(() -> new AssertionError("Сущность не найдена среди обновлённых")); - entity1.setId(created.get(0).getId()); - putAsserts(entity1, firstUpdated, newValue); - - if (client instanceof MassCreateUpdateDeleteEndpoint) { - List deleteResult = ((MassCreateUpdateDeleteEndpoint)client).delete(updated); - assertEquals(updated.size(), deleteResult.size()); - Set entityIds = updated.stream().map(MetaEntity::getId).collect(Collectors.toSet()); - ((GetListEndpoint) entityClient()).get().getRows().stream() - .filter(item -> entityIds.contains(item.getId())) - .findAny() - .ifPresent(id -> fail("Сущность найдена после массового удаления")); + putAsserts(origin1, firstUpdated, newValue); + + for (int i = 0; i < entities.size(); i++) { + entities.get(i).set(updated.get(i)); } } + + @Test + public void massCreateDeleteTest() throws IOException, ApiClientException { + EntityClientBase client = entityClient(); + + List entities = Arrays.asList( + simpleEntityManager.createSimple(entityClass(), true), + simpleEntityManager.createSimple(entityClass(), true) + ); + entities.forEach(simpleEntityManager::removeSimpleFromPool); + + Set entityIds = doMassDelete((MassCreateUpdateDeleteEndpoint) client, entities); + ((GetListEndpoint) entityClient()).get().getRows().stream() + .filter(item -> entityIds.contains(item.getId())) + .findAny() + .ifPresent(id -> fail("Сущность найдена после массового удаления")); + + entities.forEach(entity -> { + entity.setId(null); + entity.setMeta(null); + }); + List created = ((MassCreateUpdateEndpoint) client).createOrUpdate(entities); + assertEquals(entities.size(), created.size()); + assertEquals(entities.size(), created.stream().filter(p -> p.getId() != null).count()); + + //подчистка базы + doMassDelete((MassCreateUpdateDeleteEndpoint) client, created); + } + + private Set doMassDelete(MassCreateUpdateDeleteEndpoint client, List entities) throws IOException, ApiClientException { + List deleteResult = client.delete(entities); + assertEquals(entities.size(), deleteResult.size()); + assertEquals(0, deleteResult.stream().filter(x -> x.getErrors() != null).count()); + return entities.stream().map(MetaEntity::getId).collect(Collectors.toSet()); + } } diff --git a/src/test/java/com/lognex/api/entities/SimpleEntityManager.java b/src/test/java/com/lognex/api/entities/SimpleEntityManager.java index 518a13d9..dde1c72d 100644 --- a/src/test/java/com/lognex/api/entities/SimpleEntityManager.java +++ b/src/test/java/com/lognex/api/entities/SimpleEntityManager.java @@ -76,6 +76,7 @@ public T createSimple(Class entityClass, boolean force method = this.getClass().getMethod(methodName); entity = method.invoke(this); entityList.add(entityClass.cast(entity)); + accessCounterMap.put(entityClass, accessCount+1); } catch (NoSuchMethodException e) { logger.error("Невозможно получить метод " + methodName); throw new IllegalArgumentException(e.getMessage(), e); diff --git a/src/test/java/com/lognex/api/entities/StateTest.java b/src/test/java/com/lognex/api/entities/StateTest.java index 1fed7401..248b0180 100644 --- a/src/test/java/com/lognex/api/entities/StateTest.java +++ b/src/test/java/com/lognex/api/entities/StateTest.java @@ -2,6 +2,7 @@ import com.lognex.api.clients.EntityClientBase; import com.lognex.api.utils.ApiClientException; +import org.junit.Ignore; import org.junit.Test; import java.io.IOException; @@ -29,6 +30,12 @@ public void createState() throws IOException, ApiClientException { assertEquals(state.getEntityType(), retrievedState.getEntityType()); } + @Test + @Ignore + @Override + public void massCreateDeleteTest() { + } + @Override protected void putAsserts(MetaEntity originalEntity, MetaEntity updatedEntity, Object changedField) { State originalState = (State) originalEntity; diff --git a/src/test/java/com/lognex/api/entities/TaskTest.java b/src/test/java/com/lognex/api/entities/TaskTest.java index 48322313..108545ac 100644 --- a/src/test/java/com/lognex/api/entities/TaskTest.java +++ b/src/test/java/com/lognex/api/entities/TaskTest.java @@ -9,6 +9,7 @@ import com.lognex.api.utils.params.OrderParam; import org.apache.commons.lang3.tuple.Pair; import org.apache.http.RequestLine; +import org.junit.Ignore; import org.junit.Test; import java.io.IOException; @@ -278,6 +279,11 @@ public void deleteNoteTest() throws IOException, ApiClientException { assertEquals(0, retrievedNotes.getRows().size()); } + @Ignore + @Override + public void massCreateDeleteTest() { + } + @Override protected EntityClientBase entityClient() { return api.entity().task(); diff --git a/src/test/java/com/lognex/api/entities/documents/ProcessingPlanTest.java b/src/test/java/com/lognex/api/entities/documents/ProcessingPlanTest.java index 186bc72c..f5c71b61 100644 --- a/src/test/java/com/lognex/api/entities/documents/ProcessingPlanTest.java +++ b/src/test/java/com/lognex/api/entities/documents/ProcessingPlanTest.java @@ -7,6 +7,7 @@ import com.lognex.api.entities.products.Product; import com.lognex.api.responses.ListEntity; import com.lognex.api.utils.ApiClientException; +import org.junit.Ignore; import org.junit.Test; import java.io.IOException; @@ -57,6 +58,11 @@ public void createTest() throws IOException, ApiClientException { assertEquals(product.getMeta().getHref(), retrievedProduct.getMeta().getHref()); } + @Ignore + @Override + public void massCreateDeleteTest() { + } + @Override protected void getAsserts(MetaEntity originalEntity, MetaEntity retrievedEntity) { ProcessingPlan originalProcessingPlan = (ProcessingPlan) originalEntity; diff --git a/src/test/java/com/lognex/api/entities/documents/ProcessingTest.java b/src/test/java/com/lognex/api/entities/documents/ProcessingTest.java index 39abced8..cd74b310 100644 --- a/src/test/java/com/lognex/api/entities/documents/ProcessingTest.java +++ b/src/test/java/com/lognex/api/entities/documents/ProcessingTest.java @@ -9,6 +9,7 @@ import com.lognex.api.responses.ListEntity; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; import com.lognex.api.utils.ApiClientException; +import org.junit.Ignore; import org.junit.Test; import java.io.IOException; @@ -102,6 +103,11 @@ public void metadataTest() throws IOException, ApiClientException { assertFalse(response.getCreateShared()); } + @Ignore + @Override + public void massCreateDeleteTest() { + } + @Override protected void getAsserts(MetaEntity originalEntity, MetaEntity retrievedEntity) { Processing originalProcessing = (Processing) originalEntity; diff --git a/src/test/java/com/lognex/api/entities/documents/RetailDemandTest.java b/src/test/java/com/lognex/api/entities/documents/RetailDemandTest.java index e5c36bb5..fbb83f75 100644 --- a/src/test/java/com/lognex/api/entities/documents/RetailDemandTest.java +++ b/src/test/java/com/lognex/api/entities/documents/RetailDemandTest.java @@ -76,7 +76,13 @@ public void metadataTest() throws IOException, ApiClientException { @Ignore @Test @Override - public void massCreateUpdateDelete() { + public void massUpdateTest() { + } + + @Ignore + @Test + @Override + public void massCreateDeleteTest() { } @Override diff --git a/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashInTest.java b/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashInTest.java index 8d571d01..a7fc678c 100644 --- a/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashInTest.java +++ b/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashInTest.java @@ -70,7 +70,13 @@ public void getTest() throws IOException, ApiClientException { @Ignore @Test @Override - public void massCreateUpdateDelete() throws IOException, ApiClientException { + public void massUpdateTest() throws IOException, ApiClientException { + } + + @Ignore + @Test + @Override + public void massCreateDeleteTest() { } @Override diff --git a/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashOutTest.java b/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashOutTest.java index cf1585c1..e1bc8bcd 100644 --- a/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashOutTest.java +++ b/src/test/java/com/lognex/api/entities/documents/RetailDrawerCashOutTest.java @@ -70,7 +70,13 @@ public void getTest() throws IOException, ApiClientException { @Ignore @Test @Override - public void massCreateUpdateDelete() throws IOException, ApiClientException { + public void massUpdateTest() { + } + + @Ignore + @Test + @Override + public void massCreateDeleteTest() { } @Override From de6da5720d265aa9bfe949fe4f9c013047ae0f7d Mon Sep 17 00:00:00 2001 From: strubitsyn Date: Fri, 17 Jul 2020 14:18:09 +0300 Subject: [PATCH 06/14] MC-34267 standardization of CharacteristicClient --- .../api/clients/CharacteristicClient.java | 41 ++++++++++++------- .../api/entities/CharacteristicTest.java | 13 ++++-- 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/lognex/api/clients/CharacteristicClient.java b/src/main/java/com/lognex/api/clients/CharacteristicClient.java index bda00184..c51ffa51 100644 --- a/src/main/java/com/lognex/api/clients/CharacteristicClient.java +++ b/src/main/java/com/lognex/api/clients/CharacteristicClient.java @@ -2,6 +2,8 @@ import com.lognex.api.ApiClient; import com.lognex.api.clients.endpoints.GetByIdEndpoint; +import com.lognex.api.clients.endpoints.PostEndpoint; +import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.products.Variant; import com.lognex.api.responses.CharacteristicListEntity; import com.lognex.api.utils.ApiClientException; @@ -11,17 +13,22 @@ import java.io.IOException; import java.util.Collection; import java.util.List; -import java.util.stream.Collectors; public final class CharacteristicClient extends EntityClientBase implements - GetByIdEndpoint { + GetByIdEndpoint, + PostEndpoint +{ public CharacteristicClient(ApiClient api) { super(api, "/entity/variant/metadata/characteristics/"); } + /** + * Получить список всех характеристик.
+ * У полученных объектов поле value всегда null так как это характеристика, а не её значение для модификации товара + */ public CharacteristicListEntity get(ApiParam... params) throws IOException, ApiClientException { return HttpRequestExecutor. path(api(), path()). @@ -29,22 +36,28 @@ public CharacteristicListEntity get(ApiParam... params) throws IOException, ApiC get(CharacteristicListEntity.class); } - public Variant.Characteristic create(String name) throws IOException, ApiClientException { - Variant.Characteristic characteristic = new Variant.Characteristic(); - characteristic.setName(name); - return HttpRequestExecutor. - path(api(), path()). - body(characteristic). - post(Variant.Characteristic.class); + /** + * Создание новой характеристики.
+ * При создании характеристики учитывается только поле name. + */ + @Override + public Variant.Characteristic create(Variant.Characteristic newEntity) throws IOException, ApiClientException { + return PostEndpoint.super.create(newEntity); } - public List create(Collection names) throws IOException, ApiClientException { - List items = names.stream() - .map(Variant.Characteristic::new) - .collect(Collectors.toList()); + /** + * Массовое создание новых характеристик.
+ * При создании характеристики учитывается только поле name. + */ + public List create(Collection entities) throws IOException, ApiClientException { return HttpRequestExecutor. path(api(), path()). - body(items). + body(entities). postList(Variant.Characteristic.class); } + + @Override + public Class entityClass() { + return Variant.Characteristic.class; + } } diff --git a/src/test/java/com/lognex/api/entities/CharacteristicTest.java b/src/test/java/com/lognex/api/entities/CharacteristicTest.java index 589352f0..3b9545aa 100644 --- a/src/test/java/com/lognex/api/entities/CharacteristicTest.java +++ b/src/test/java/com/lognex/api/entities/CharacteristicTest.java @@ -23,12 +23,12 @@ public void testGet() throws IOException, ApiClientException { .collect(Collectors.toSet()); String name1 = simpleEntityManager.randomString(); - Variant.Characteristic characteristic1 = api.entity().variant().characteristics().create(name1); + Variant.Characteristic characteristic1 = api.entity().variant().characteristics().create(byName(name1)); assertNotNull(characteristic1.getId()); assertEquals(name1, characteristic1.getName()); String name2 = simpleEntityManager.randomString(); - Variant.Characteristic characteristic2 = api.entity().variant().characteristics().create(name2); + Variant.Characteristic characteristic2 = api.entity().variant().characteristics().create(byName(name2)); Set actualCharacteristics = api.entity().variant().characteristics().get() .getCharacteristics().stream() @@ -39,10 +39,17 @@ public void testGet() throws IOException, ApiClientException { assertEquals(expectedCharacteristics, actualCharacteristics); } + private Variant.Characteristic byName(String name) { + Variant.Characteristic result = new Variant.Characteristic(name); + result.setName(name); + return result; + } + @Test public void testMassCreate() throws IOException, ApiClientException { Set names = new HashSet<>(Arrays.asList(simpleEntityManager.randomString(), simpleEntityManager.randomString())); - Set received = api.entity().variant().characteristics().create(names).stream() + List itemsToCreate = names.stream().map(this::byName).collect(Collectors.toList()); + Set received = api.entity().variant().characteristics().create(itemsToCreate).stream() .map(MetaEntity::getName) .collect(Collectors.toSet()); assertEquals(names, received); From 0f48c8223badb3b4ef1b437b9085b2a07f6d374f Mon Sep 17 00:00:00 2001 From: segorov Date: Fri, 17 Jul 2020 16:24:30 +0300 Subject: [PATCH 07/14] MC-40426 discount, add all types --- .../clients/AccumulationDiscountClient.java | 23 +++++++ .../api/clients/BonusProgramClient.java | 6 +- .../com/lognex/api/clients/EntityClient.java | 20 ++++++ .../api/clients/PersonalDiscountClient.java | 22 +++++++ .../api/clients/RoundOffDiscountClient.java | 21 +++++++ .../clients/SpecialPriceDiscountClient.java | 22 +++++++ .../discounts/AccumulationDiscount.java | 8 +-- .../api/entities/discounts/BonusProgram.java | 6 +- .../api/entities/discounts/Discount.java | 10 +-- .../api/entities/discounts/GoodDiscount.java | 36 +++++++++++ .../entities/discounts/PersonalDiscount.java | 2 +- .../entities/discounts/RoundOffDiscount.java | 17 ++++++ .../discounts/SpecialPriceDiscount.java | 12 ++-- .../entities/AccumulationDiscountTest.java | 59 ++++++++++++++++++ .../lognex/api/entities/BonusProgramTest.java | 53 ++++++++++++++++ .../com/lognex/api/entities/DiscountTest.java | 16 +++-- .../lognex/api/entities/EntityTestBase.java | 11 +++- .../api/entities/PersonalDiscountTest.java | 51 ++++++++++++++++ .../api/entities/RoundOffDiscountTest.java | 34 +++++++++++ .../entities/SpecialPriceDiscountTest.java | 61 +++++++++++++++++++ 20 files changed, 451 insertions(+), 39 deletions(-) create mode 100644 src/main/java/com/lognex/api/clients/AccumulationDiscountClient.java create mode 100644 src/main/java/com/lognex/api/clients/PersonalDiscountClient.java create mode 100644 src/main/java/com/lognex/api/clients/RoundOffDiscountClient.java create mode 100644 src/main/java/com/lognex/api/clients/SpecialPriceDiscountClient.java create mode 100644 src/main/java/com/lognex/api/entities/discounts/GoodDiscount.java create mode 100644 src/main/java/com/lognex/api/entities/discounts/RoundOffDiscount.java create mode 100644 src/test/java/com/lognex/api/entities/AccumulationDiscountTest.java create mode 100644 src/test/java/com/lognex/api/entities/BonusProgramTest.java create mode 100644 src/test/java/com/lognex/api/entities/PersonalDiscountTest.java create mode 100644 src/test/java/com/lognex/api/entities/RoundOffDiscountTest.java create mode 100644 src/test/java/com/lognex/api/entities/SpecialPriceDiscountTest.java diff --git a/src/main/java/com/lognex/api/clients/AccumulationDiscountClient.java b/src/main/java/com/lognex/api/clients/AccumulationDiscountClient.java new file mode 100644 index 00000000..777c4f40 --- /dev/null +++ b/src/main/java/com/lognex/api/clients/AccumulationDiscountClient.java @@ -0,0 +1,23 @@ +package com.lognex.api.clients; + +import com.lognex.api.clients.endpoints.*; +import com.lognex.api.entities.MetaEntity; +import com.lognex.api.entities.discounts.AccumulationDiscount; + +public final class AccumulationDiscountClient extends EntityClientBase + implements + GetListEndpoint, + GetByIdEndpoint, + PostEndpoint, + PutByIdEndpoint, + DeleteByIdEndpoint { + + public AccumulationDiscountClient(com.lognex.api.ApiClient api) { + super(api, "/entity/accumulationdiscount/"); + } + + @Override + public Class entityClass() { + return AccumulationDiscount.class; + } +} diff --git a/src/main/java/com/lognex/api/clients/BonusProgramClient.java b/src/main/java/com/lognex/api/clients/BonusProgramClient.java index ab5280fd..cf95cb0e 100644 --- a/src/main/java/com/lognex/api/clients/BonusProgramClient.java +++ b/src/main/java/com/lognex/api/clients/BonusProgramClient.java @@ -1,8 +1,6 @@ package com.lognex.api.clients; -import com.lognex.api.clients.endpoints.DeleteByIdEndpoint; -import com.lognex.api.clients.endpoints.GetByIdEndpoint; -import com.lognex.api.clients.endpoints.GetListEndpoint; +import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.discounts.BonusProgram; @@ -11,6 +9,8 @@ public final class BonusProgramClient implements GetListEndpoint, GetByIdEndpoint, + PostEndpoint, + PutByIdEndpoint, DeleteByIdEndpoint { public BonusProgramClient(com.lognex.api.ApiClient api) { diff --git a/src/main/java/com/lognex/api/clients/EntityClient.java b/src/main/java/com/lognex/api/clients/EntityClient.java index 8391fd83..7f8ef8b4 100644 --- a/src/main/java/com/lognex/api/clients/EntityClient.java +++ b/src/main/java/com/lognex/api/clients/EntityClient.java @@ -286,6 +286,26 @@ public BonusTransactionClient bonustransaction() { return new BonusTransactionClient(api); } + @ApiChainElement + public PersonalDiscountClient personaldiscount() { + return new PersonalDiscountClient(api); + } + + @ApiChainElement + public AccumulationDiscountClient accumulationdiscount() { + return new AccumulationDiscountClient(api); + } + + @ApiChainElement + public RoundOffDiscountClient roundoffdiscount() { + return new RoundOffDiscountClient(api); + } + + @ApiChainElement + public SpecialPriceDiscountClient specialpricediscount() { + return new SpecialPriceDiscountClient(api); + } + @ApiChainElement public RegionClient region() { return new RegionClient(api); diff --git a/src/main/java/com/lognex/api/clients/PersonalDiscountClient.java b/src/main/java/com/lognex/api/clients/PersonalDiscountClient.java new file mode 100644 index 00000000..f8873ced --- /dev/null +++ b/src/main/java/com/lognex/api/clients/PersonalDiscountClient.java @@ -0,0 +1,22 @@ +package com.lognex.api.clients; + +import com.lognex.api.clients.endpoints.*; +import com.lognex.api.entities.MetaEntity; +import com.lognex.api.entities.discounts.PersonalDiscount; + +public final class PersonalDiscountClient extends EntityClientBase + implements GetListEndpoint, + GetByIdEndpoint, + PostEndpoint, + PutByIdEndpoint, + DeleteByIdEndpoint { + + public PersonalDiscountClient(com.lognex.api.ApiClient api) { + super(api, "/entity/personaldiscount/"); + } + + @Override + public Class entityClass() { + return PersonalDiscount.class; + } +} diff --git a/src/main/java/com/lognex/api/clients/RoundOffDiscountClient.java b/src/main/java/com/lognex/api/clients/RoundOffDiscountClient.java new file mode 100644 index 00000000..8d4ca23b --- /dev/null +++ b/src/main/java/com/lognex/api/clients/RoundOffDiscountClient.java @@ -0,0 +1,21 @@ +package com.lognex.api.clients; + +import com.lognex.api.clients.endpoints.GetByIdEndpoint; +import com.lognex.api.clients.endpoints.PutByIdEndpoint; +import com.lognex.api.entities.MetaEntity; +import com.lognex.api.entities.discounts.RoundOffDiscount; + +public final class RoundOffDiscountClient extends EntityClientBase + implements + GetByIdEndpoint, + PutByIdEndpoint { + + public RoundOffDiscountClient(com.lognex.api.ApiClient api) { + super(api, "/entity/discount/"); + } + + @Override + public Class entityClass() { + return RoundOffDiscount.class; + } +} diff --git a/src/main/java/com/lognex/api/clients/SpecialPriceDiscountClient.java b/src/main/java/com/lognex/api/clients/SpecialPriceDiscountClient.java new file mode 100644 index 00000000..25d143ac --- /dev/null +++ b/src/main/java/com/lognex/api/clients/SpecialPriceDiscountClient.java @@ -0,0 +1,22 @@ +package com.lognex.api.clients; + +import com.lognex.api.clients.endpoints.*; +import com.lognex.api.entities.MetaEntity; +import com.lognex.api.entities.discounts.SpecialPriceDiscount; + +public final class SpecialPriceDiscountClient extends EntityClientBase + implements + GetListEndpoint, + GetByIdEndpoint, + PostEndpoint, + PutByIdEndpoint, + DeleteByIdEndpoint { + public SpecialPriceDiscountClient(com.lognex.api.ApiClient api) { + super(api, "/entity/specialpricediscount/"); + } + + @Override + public Class entityClass() { + return SpecialPriceDiscount.class; + } +} diff --git a/src/main/java/com/lognex/api/entities/discounts/AccumulationDiscount.java b/src/main/java/com/lognex/api/entities/discounts/AccumulationDiscount.java index 166bbd4c..956e045c 100644 --- a/src/main/java/com/lognex/api/entities/discounts/AccumulationDiscount.java +++ b/src/main/java/com/lognex/api/entities/discounts/AccumulationDiscount.java @@ -1,6 +1,5 @@ package com.lognex.api.entities.discounts; -import com.lognex.api.entities.ProductFolder; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -15,8 +14,7 @@ @Setter @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public class AccumulationDiscount extends Discount { - private List productFolders; +public class AccumulationDiscount extends GoodDiscount { public List levels; public AccumulationDiscount(String id) { @@ -28,7 +26,7 @@ public AccumulationDiscount(String id) { @NoArgsConstructor @EqualsAndHashCode public static class AccumulationLevel { - private Long amount; - private Integer discount; + private Double amount; + private Double discount; } } diff --git a/src/main/java/com/lognex/api/entities/discounts/BonusProgram.java b/src/main/java/com/lognex/api/entities/discounts/BonusProgram.java index 3b8164ff..2f3500a7 100644 --- a/src/main/java/com/lognex/api/entities/discounts/BonusProgram.java +++ b/src/main/java/com/lognex/api/entities/discounts/BonusProgram.java @@ -14,7 +14,7 @@ @NoArgsConstructor @EqualsAndHashCode(callSuper = true) public class BonusProgram extends Discount implements Fetchable { - private Long earnRateRoublesToPoint; - private Long spendRatePointsToRouble; - private Long maxPaidRatePercents; + private Integer earnRateRoublesToPoint; + private Integer spendRatePointsToRouble; + private Integer maxPaidRatePercents; } diff --git a/src/main/java/com/lognex/api/entities/discounts/Discount.java b/src/main/java/com/lognex/api/entities/discounts/Discount.java index 3ecd06a2..f2f84da7 100644 --- a/src/main/java/com/lognex/api/entities/discounts/Discount.java +++ b/src/main/java/com/lognex/api/entities/discounts/Discount.java @@ -1,7 +1,6 @@ package com.lognex.api.entities.discounts; import com.lognex.api.entities.MetaEntity; -import com.lognex.api.entities.products.markers.ProductMarker; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -20,20 +19,15 @@ public class Discount extends MetaEntity { private Boolean active; /** - * Индикатор, действует ли скидка на все товары + * Индикатор, действует ли скидка на всех агентов */ - private Boolean allProducts; + private Boolean allAgents; /** * Теги контрагентов, к которым применяется скидка (если применяется не ко всем контрагентам) */ private List agentTags; - /** - * Товары и услуги, которые были выбраны для применения скидки (если применяется не ко всем товарам) - */ - private List assortment; - public Discount(String id) { super(id); } diff --git a/src/main/java/com/lognex/api/entities/discounts/GoodDiscount.java b/src/main/java/com/lognex/api/entities/discounts/GoodDiscount.java new file mode 100644 index 00000000..fbc428eb --- /dev/null +++ b/src/main/java/com/lognex/api/entities/discounts/GoodDiscount.java @@ -0,0 +1,36 @@ +package com.lognex.api.entities.discounts; + +import com.lognex.api.entities.ProductFolder; +import com.lognex.api.entities.products.markers.ProductMarker; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public abstract class GoodDiscount extends Discount { + + public GoodDiscount(String id) { + super(id); + } + + /** + * Индикатор, действует ли скидка на все товары + * */ + private Boolean allProducts; + + /** + * Товары и услуги, которые были выбраны для применения скидки (если применяется не ко всем товарам) + */ + private List assortment; + + /** + * Группы товаров которые были выбраны для применения скидки (если применяется не ко всем товарам) + * */ + private List productFolders; +} diff --git a/src/main/java/com/lognex/api/entities/discounts/PersonalDiscount.java b/src/main/java/com/lognex/api/entities/discounts/PersonalDiscount.java index 222c3f8d..1e8d7546 100644 --- a/src/main/java/com/lognex/api/entities/discounts/PersonalDiscount.java +++ b/src/main/java/com/lognex/api/entities/discounts/PersonalDiscount.java @@ -9,7 +9,7 @@ @Setter @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public class PersonalDiscount extends Discount { +public class PersonalDiscount extends GoodDiscount { public PersonalDiscount(String id) { super(id); } diff --git a/src/main/java/com/lognex/api/entities/discounts/RoundOffDiscount.java b/src/main/java/com/lognex/api/entities/discounts/RoundOffDiscount.java new file mode 100644 index 00000000..1f37e3e8 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/discounts/RoundOffDiscount.java @@ -0,0 +1,17 @@ +package com.lognex.api.entities.discounts; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class RoundOffDiscount extends Discount { + + public RoundOffDiscount(String id) { + super(id); + } +} diff --git a/src/main/java/com/lognex/api/entities/discounts/SpecialPriceDiscount.java b/src/main/java/com/lognex/api/entities/discounts/SpecialPriceDiscount.java index 3bff5901..833a276d 100644 --- a/src/main/java/com/lognex/api/entities/discounts/SpecialPriceDiscount.java +++ b/src/main/java/com/lognex/api/entities/discounts/SpecialPriceDiscount.java @@ -1,22 +1,20 @@ package com.lognex.api.entities.discounts; +import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.PriceType; -import com.lognex.api.entities.ProductFolder; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import java.util.List; - @Getter @Setter @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public class SpecialPriceDiscount extends Discount { - private Double discount; +public class SpecialPriceDiscount extends GoodDiscount { + private Boolean usePriceType; private SpecialPriceData specialPrice; - private List productFolders; + private Double discount; public SpecialPriceDiscount(String id) { super(id); @@ -26,7 +24,7 @@ public SpecialPriceDiscount(String id) { @Setter @NoArgsConstructor @EqualsAndHashCode - public static class SpecialPriceData { + public static class SpecialPriceData extends MetaEntity { private Long value; private PriceType priceType; } diff --git a/src/test/java/com/lognex/api/entities/AccumulationDiscountTest.java b/src/test/java/com/lognex/api/entities/AccumulationDiscountTest.java new file mode 100644 index 00000000..b6c082da --- /dev/null +++ b/src/test/java/com/lognex/api/entities/AccumulationDiscountTest.java @@ -0,0 +1,59 @@ +package com.lognex.api.entities; + +import com.lognex.api.entities.discounts.AccumulationDiscount; +import com.lognex.api.responses.ListEntity; +import com.lognex.api.utils.ApiClientException; +import org.junit.Test; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; + +import static org.junit.Assert.*; + +public class AccumulationDiscountTest extends EntityTestBase { + + @Test + public void accumulationDiscountCrudTest() throws IOException, ApiClientException { + //get all discount + ListEntity accumulationDiscountList = api.entity().accumulationdiscount().get(); + assertEquals(0, accumulationDiscountList.getRows().size()); + //create one discount + AccumulationDiscount accumulationDiscount = new AccumulationDiscount(); + accumulationDiscount.setName("test"); + accumulationDiscount.setActive(false); + accumulationDiscount.setAgentTags(new ArrayList<>()); + accumulationDiscount.setAllAgents(true); + accumulationDiscount.setAllProducts(true); + accumulationDiscount.setAssortment(new ArrayList<>()); + accumulationDiscount.setProductFolders(new ArrayList<>()); + AccumulationDiscount.AccumulationLevel accumulationLevel = new AccumulationDiscount.AccumulationLevel(); + accumulationLevel.setAmount(10.); + accumulationLevel.setDiscount(5.); + accumulationDiscount.setLevels(new ArrayList(Arrays.asList(accumulationLevel))); + accumulationDiscount = api.entity().accumulationdiscount().create(accumulationDiscount); + assertEquals("test", accumulationDiscount.getName()); + assertFalse(accumulationDiscount.getActive()); + assertTrue(accumulationDiscount.getAllAgents()); + assertTrue(accumulationDiscount.getAllProducts()); + assertEquals(0, accumulationDiscount.getAgentTags().size()); + assertEquals(1, accumulationDiscount.getLevels().size()); + assertEquals(10., accumulationDiscount.getLevels().get(0).getAmount(), 0); + assertEquals(5., accumulationDiscount.getLevels().get(0).getDiscount(), 0); + //get all discount + accumulationDiscountList = api.entity().accumulationdiscount().get(); + assertEquals(1, accumulationDiscountList.getRows().size()); + //get one + accumulationDiscount = api.entity().accumulationdiscount().get(accumulationDiscount.getId()); + assertEquals("test", accumulationDiscount.getName()); + //update one + accumulationDiscount.setName("new"); + api.entity().accumulationdiscount().update(accumulationDiscount.getId(), accumulationDiscount); + accumulationDiscount = api.entity().accumulationdiscount().get(accumulationDiscount.getId()); + assertEquals("new", accumulationDiscount.getName()); + //delete + api.entity().accumulationdiscount().delete(accumulationDiscount.getId()); + accumulationDiscountList = api.entity().accumulationdiscount().get(); + assertEquals(0, accumulationDiscountList.getRows().size()); + } +} diff --git a/src/test/java/com/lognex/api/entities/BonusProgramTest.java b/src/test/java/com/lognex/api/entities/BonusProgramTest.java new file mode 100644 index 00000000..25ad54d8 --- /dev/null +++ b/src/test/java/com/lognex/api/entities/BonusProgramTest.java @@ -0,0 +1,53 @@ +package com.lognex.api.entities; + +import com.lognex.api.entities.discounts.BonusProgram; +import com.lognex.api.responses.ListEntity; +import com.lognex.api.utils.ApiClientException; +import org.junit.Test; + +import java.io.IOException; +import java.util.ArrayList; + +import static org.junit.Assert.*; + +public class BonusProgramTest extends EntityTestBase { + + @Test + public void BonusProgramCrudTest() throws IOException, ApiClientException { + //get all discount + ListEntity bonusProgramList = api.entity().bonusprogram().get(); + assertEquals(0, bonusProgramList.getRows().size()); + //create one discount + BonusProgram bonusProgram = new BonusProgram(); + bonusProgram.setName("test"); + bonusProgram.setActive(false); + bonusProgram.setAgentTags(new ArrayList<>()); + bonusProgram.setAllAgents(true); + bonusProgram.setEarnRateRoublesToPoint(1); + bonusProgram.setMaxPaidRatePercents(2); + bonusProgram.setSpendRatePointsToRouble(3); + bonusProgram = api.entity().bonusprogram().create(bonusProgram); + assertEquals("test", bonusProgram.getName()); + assertFalse(bonusProgram.getActive()); + assertTrue(bonusProgram.getAllAgents()); + assertTrue(bonusProgram.getEarnRateRoublesToPoint() == 1); + assertTrue(bonusProgram.getMaxPaidRatePercents() == 2); + assertTrue(bonusProgram.getSpendRatePointsToRouble() == 3); + assertEquals(0, bonusProgram.getAgentTags().size()); + //get all discount + bonusProgramList = api.entity().bonusprogram().get(); + assertEquals(1, bonusProgramList.getRows().size()); + //get one + bonusProgram = api.entity().bonusprogram().get(bonusProgram.getId()); + assertEquals("test", bonusProgram.getName()); + //update one + bonusProgram.setName("new"); + api.entity().bonusprogram().update(bonusProgram.getId(), bonusProgram); + bonusProgram = api.entity().bonusprogram().get(bonusProgram.getId()); + assertEquals("new", bonusProgram.getName()); + //delete + api.entity().bonusprogram().delete(bonusProgram.getId()); + bonusProgramList = api.entity().bonusprogram().get(); + assertEquals(0, bonusProgramList.getRows().size()); + } +} diff --git a/src/test/java/com/lognex/api/entities/DiscountTest.java b/src/test/java/com/lognex/api/entities/DiscountTest.java index af4f7748..617593fc 100644 --- a/src/test/java/com/lognex/api/entities/DiscountTest.java +++ b/src/test/java/com/lognex/api/entities/DiscountTest.java @@ -117,10 +117,10 @@ public void deserializeAccumulationDiscountTest() { ((Variant) accumulationDiscount.getAssortment().get(0)).getMeta().getHref() ); assertEquals(2, accumulationDiscount.getLevels().size()); - assertEquals(Long.valueOf(100000), accumulationDiscount.getLevels().get(0).getAmount()); - assertEquals(Integer.valueOf(10), accumulationDiscount.getLevels().get(0).getDiscount()); - assertEquals(Long.valueOf(200000), accumulationDiscount.getLevels().get(1).getAmount()); - assertEquals(Integer.valueOf(15), accumulationDiscount.getLevels().get(1).getDiscount()); + assertEquals(Double.valueOf(100000.0), accumulationDiscount.getLevels().get(0).getAmount()); + assertEquals(Double.valueOf(10.0), accumulationDiscount.getLevels().get(0).getDiscount()); + assertEquals(Double.valueOf(200000.0), accumulationDiscount.getLevels().get(1).getAmount()); + assertEquals(Double.valueOf(15.0), accumulationDiscount.getLevels().get(1).getDiscount()); } @Test @@ -138,10 +138,8 @@ public void deserializeBonusProgramDiscountTest() { assertEquals("96673f4d-9f4d-11e6-8af5-581e0000007b", bonusProgram.getId()); assertEquals("Бонусная программа", bonusProgram.getName()); assertTrue(bonusProgram.getActive()); - assertTrue(bonusProgram.getAllProducts()); - assertNull(bonusProgram.getAssortment()); - assertEquals(Long.valueOf(1), bonusProgram.getEarnRateRoublesToPoint()); - assertEquals(Long.valueOf(10), bonusProgram.getSpendRatePointsToRouble()); - assertEquals(Long.valueOf(100), bonusProgram.getMaxPaidRatePercents()); + assertEquals(Integer.valueOf(1), bonusProgram.getEarnRateRoublesToPoint()); + assertEquals(Integer.valueOf(10), bonusProgram.getSpendRatePointsToRouble()); + assertEquals(Integer.valueOf(100), bonusProgram.getMaxPaidRatePercents()); } } diff --git a/src/test/java/com/lognex/api/entities/EntityTestBase.java b/src/test/java/com/lognex/api/entities/EntityTestBase.java index 1fc3943d..0beb2305 100644 --- a/src/test/java/com/lognex/api/entities/EntityTestBase.java +++ b/src/test/java/com/lognex/api/entities/EntityTestBase.java @@ -13,10 +13,15 @@ public abstract class EntityTestBase implements TestRandomizers, TestAsserts, Te @Before public void init() { +// api = new ApiClient( +// System.getenv("API_HOST"), +// TestConstants.FORCE_HTTPS_FOR_TESTS, System.getenv("API_LOGIN"), +// System.getenv("API_PASSWORD") +// ); api = new ApiClient( - System.getenv("API_HOST"), - TestConstants.FORCE_HTTPS_FOR_TESTS, System.getenv("API_LOGIN"), - System.getenv("API_PASSWORD") + "http://localhost", + false, "admin@123", + "123123" ); mockHttpClient = new MockHttpClient(); diff --git a/src/test/java/com/lognex/api/entities/PersonalDiscountTest.java b/src/test/java/com/lognex/api/entities/PersonalDiscountTest.java new file mode 100644 index 00000000..ea3f2182 --- /dev/null +++ b/src/test/java/com/lognex/api/entities/PersonalDiscountTest.java @@ -0,0 +1,51 @@ +package com.lognex.api.entities; + +import com.lognex.api.entities.discounts.PersonalDiscount; +import com.lognex.api.responses.ListEntity; +import com.lognex.api.utils.ApiClientException; +import org.junit.Test; + +import java.io.IOException; +import java.util.ArrayList; + +import static org.junit.Assert.assertEquals; + +public class PersonalDiscountTest extends EntityTestBase { + + @Test + public void PersonalDiscountCrudTest() throws IOException, ApiClientException { + //get all discount + ListEntity personalDiscountList = api.entity().personaldiscount().get(); + assertEquals(0, personalDiscountList.getRows().size()); + //create one discount + PersonalDiscount personalDiscount = new PersonalDiscount(); + personalDiscount.setName("test"); + personalDiscount.setActive(false); + personalDiscount.setAgentTags(new ArrayList<>()); + personalDiscount.setAllAgents(true); + personalDiscount.setAllProducts(true); + personalDiscount.setAssortment(new ArrayList<>()); + personalDiscount.setProductFolders(new ArrayList<>()); + personalDiscount = api.entity().personaldiscount().create(personalDiscount); + assertEquals("test", personalDiscount.getName()); + assertEquals(false, personalDiscount.getActive()); + assertEquals(true, personalDiscount.getAllAgents()); + assertEquals(true, personalDiscount.getAllProducts()); + assertEquals(0, personalDiscount.getAgentTags().size()); + //get all discount + personalDiscountList = api.entity().personaldiscount().get(); + assertEquals(1, personalDiscountList.getRows().size()); + //get one + personalDiscount = api.entity().personaldiscount().get(personalDiscount.getId()); + assertEquals("test", personalDiscount.getName()); + //update one + personalDiscount.setName("new"); + api.entity().personaldiscount().update(personalDiscount.getId(), personalDiscount); + personalDiscount = api.entity().personaldiscount().get(personalDiscount.getId()); + assertEquals("new", personalDiscount.getName()); + //delete + api.entity().personaldiscount().delete(personalDiscount.getId()); + personalDiscountList = api.entity().personaldiscount().get(); + assertEquals(0, personalDiscountList.getRows().size()); + } +} diff --git a/src/test/java/com/lognex/api/entities/RoundOffDiscountTest.java b/src/test/java/com/lognex/api/entities/RoundOffDiscountTest.java new file mode 100644 index 00000000..a6fdcda9 --- /dev/null +++ b/src/test/java/com/lognex/api/entities/RoundOffDiscountTest.java @@ -0,0 +1,34 @@ +package com.lognex.api.entities; + +import com.lognex.api.entities.discounts.Discount; +import com.lognex.api.entities.discounts.RoundOffDiscount; +import com.lognex.api.responses.ListEntity; +import com.lognex.api.utils.ApiClientException; +import org.junit.Test; + +import java.io.IOException; + +import static org.junit.Assert.*; + +public class RoundOffDiscountTest extends EntityTestBase { + + @Test + public void RoundOffDiscountCrudTest() throws IOException, ApiClientException { + //get all discount + ListEntity discountList = api.entity().discount().get(); + assertEquals(1, discountList.getRows().size()); + //get one + Discount discount = discountList.getRows().get(0); + RoundOffDiscount roundOffDiscount = api.entity().roundoffdiscount().get(discount.getId()); + assertNotNull(roundOffDiscount.getName()); + assertNotEquals("new", roundOffDiscount); + String defaultName = roundOffDiscount.getName(); + //update one + roundOffDiscount.setName("new"); + api.entity().roundoffdiscount().update(roundOffDiscount.getId(), roundOffDiscount); + roundOffDiscount = api.entity().roundoffdiscount().get(roundOffDiscount.getId()); + assertEquals("new", roundOffDiscount.getName()); + roundOffDiscount.setName(defaultName); + api.entity().roundoffdiscount().update(roundOffDiscount.getId(), roundOffDiscount); + } +} diff --git a/src/test/java/com/lognex/api/entities/SpecialPriceDiscountTest.java b/src/test/java/com/lognex/api/entities/SpecialPriceDiscountTest.java new file mode 100644 index 00000000..d30ddf3d --- /dev/null +++ b/src/test/java/com/lognex/api/entities/SpecialPriceDiscountTest.java @@ -0,0 +1,61 @@ +package com.lognex.api.entities; + +import com.lognex.api.entities.discounts.SpecialPriceDiscount; +import com.lognex.api.responses.ListEntity; +import com.lognex.api.utils.ApiClientException; +import org.junit.Test; + +import java.io.IOException; +import java.util.ArrayList; + +import static org.junit.Assert.*; + +public class SpecialPriceDiscountTest extends EntityTestBase { + + @Test + public void SpecialPriceDiscountCrudTest() throws IOException, ApiClientException { + //get all discount + ListEntity specialPriceDiscountList = api.entity().specialpricediscount().get(); + assertEquals(0, specialPriceDiscountList.getRows().size()); + //create one discount + SpecialPriceDiscount specialPriceDiscount = new SpecialPriceDiscount(); + specialPriceDiscount.setName("test"); + specialPriceDiscount.setActive(false); + specialPriceDiscount.setAgentTags(new ArrayList<>()); + specialPriceDiscount.setAllAgents(true); + specialPriceDiscount.setAllProducts(true); + specialPriceDiscount.setAssortment(new ArrayList<>()); + specialPriceDiscount.setProductFolders(new ArrayList<>()); + specialPriceDiscount.setDiscount(10.); + specialPriceDiscount.setUsePriceType(false); + PriceType priceType = api.entity().pricelist().get().getRows().get(0).getPriceType(); + SpecialPriceDiscount.SpecialPriceData specialPriceData = new SpecialPriceDiscount.SpecialPriceData(); + specialPriceData.setMeta(priceType.getMeta()); + specialPriceDiscount.setSpecialPrice(specialPriceData); + //check + specialPriceDiscount = api.entity().specialpricediscount().create(specialPriceDiscount); + assertEquals("test", specialPriceDiscount.getName()); + assertFalse(specialPriceDiscount.getActive()); + assertTrue(specialPriceDiscount.getAllAgents()); + assertTrue(specialPriceDiscount.getAllProducts()); + assertEquals(0, specialPriceDiscount.getAgentTags().size()); + assertEquals(10., specialPriceDiscount.getDiscount(), 0.1); + assertFalse(specialPriceDiscount.getUsePriceType()); + //get all discount + specialPriceDiscountList = api.entity().specialpricediscount().get(); + assertEquals(1, specialPriceDiscountList.getRows().size()); + //get one + specialPriceDiscount = api.entity().specialpricediscount().get(specialPriceDiscount.getId()); + assertEquals("test", specialPriceDiscount.getName()); + //update one + specialPriceDiscount.setName("new"); + specialPriceDiscount.setSpecialPrice(specialPriceData); + api.entity().specialpricediscount().update(specialPriceDiscount.getId(), specialPriceDiscount); + specialPriceDiscount = api.entity().specialpricediscount().get(specialPriceDiscount.getId()); + assertEquals("new", specialPriceDiscount.getName()); + //delete + api.entity().specialpricediscount().delete(specialPriceDiscount.getId()); + specialPriceDiscountList = api.entity().specialpricediscount().get(); + assertEquals(0, specialPriceDiscountList.getRows().size()); + } +} From e763caa852639892805cb147557861e3f9498b02 Mon Sep 17 00:00:00 2001 From: segorov Date: Fri, 17 Jul 2020 16:39:06 +0300 Subject: [PATCH 08/14] MC-40426 fix --- .../java/com/lognex/api/entities/EntityTestBase.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/test/java/com/lognex/api/entities/EntityTestBase.java b/src/test/java/com/lognex/api/entities/EntityTestBase.java index 0beb2305..1fc3943d 100644 --- a/src/test/java/com/lognex/api/entities/EntityTestBase.java +++ b/src/test/java/com/lognex/api/entities/EntityTestBase.java @@ -13,15 +13,10 @@ public abstract class EntityTestBase implements TestRandomizers, TestAsserts, Te @Before public void init() { -// api = new ApiClient( -// System.getenv("API_HOST"), -// TestConstants.FORCE_HTTPS_FOR_TESTS, System.getenv("API_LOGIN"), -// System.getenv("API_PASSWORD") -// ); api = new ApiClient( - "http://localhost", - false, "admin@123", - "123123" + System.getenv("API_HOST"), + TestConstants.FORCE_HTTPS_FOR_TESTS, System.getenv("API_LOGIN"), + System.getenv("API_PASSWORD") ); mockHttpClient = new MockHttpClient(); From cf1177c034c837081fdaf0db9e0ec4a822ad007e Mon Sep 17 00:00:00 2001 From: segorov Date: Fri, 17 Jul 2020 17:02:39 +0300 Subject: [PATCH 09/14] MC-40426 fix --- src/test/resources/methods.csv | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/test/resources/methods.csv b/src/test/resources/methods.csv index 4737c34e..3c9e0257 100644 --- a/src/test/resources/methods.csv +++ b/src/test/resources/methods.csv @@ -1538,4 +1538,35 @@ GET;https://test.moysklad/api/remap/1.2/entity/organization/ENTITY_ID/accounts;O POST;https://test.moysklad/api/remap/1.2/entity/organization/ID/accounts;String,Collection;ArrayList POST;https://test.moysklad/api/remap/1.2/entity/retailstore/;MetaEntity;MetaEntity PUT;https://test.moysklad/api/remap/1.2/entity/retailstore/ID;String,MetaEntity;void -PUT;https://test.moysklad/api/remap/1.2/entity/retailstore/ENTITY_ID;MetaEntity;void \ No newline at end of file +PUT;https://test.moysklad/api/remap/1.2/entity/retailstore/ENTITY_ID;MetaEntity;void +GET;https://test.moysklad/api/remap/1.2/entity/specialpricediscount/;ApiParam[];ListEntity +POST;https://test.moysklad/api/remap/1.2/entity/accumulationdiscount/;MetaEntity;MetaEntity +PUT;https://test.moysklad/api/remap/1.2/entity/discount/ID;String,MetaEntity;void +DELETE;https://test.moysklad/api/remap/1.2/entity/specialpricediscount/ENTITY_ID;MetaEntity;void +PUT;https://test.moysklad/api/remap/1.2/entity/discount/ENTITY_ID;MetaEntity;void +GET;https://test.moysklad/api/remap/1.2/entity/personaldiscount/ENTITY_ID;MetaEntity,ApiParam[];PersonalDiscount +PUT;https://test.moysklad/api/remap/1.2/entity/bonusprogram/ID;String,MetaEntity;void +GET;https://test.moysklad/api/remap/1.2/entity/specialpricediscount/ID;String,ApiParam[];SpecialPriceDiscount +PUT;https://test.moysklad/api/remap/1.2/entity/personaldiscount/ENTITY_ID;MetaEntity;void +DELETE;https://test.moysklad/api/remap/1.2/entity/personaldiscount/ID;String;void +GET;https://test.moysklad/api/remap/1.2/entity/discount/ID;String,ApiParam[];RoundOffDiscount +GET;https://test.moysklad/api/remap/1.2/entity/personaldiscount/ID;String,ApiParam[];PersonalDiscount +PUT;https://test.moysklad/api/remap/1.2/entity/specialpricediscount/ENTITY_ID;MetaEntity;void +DELETE;https://test.moysklad/api/remap/1.2/entity/accumulationdiscount/ENTITY_ID;MetaEntity;void +GET;https://test.moysklad/api/remap/1.2/entity/personaldiscount/;ApiParam[];ListEntity +GET;https://test.moysklad/api/remap/1.2/entity/accumulationdiscount/ID;String,ApiParam[];AccumulationDiscount +GET;https://test.moysklad/api/remap/1.2/entity/accumulationdiscount/;ApiParam[];ListEntity +PUT;https://test.moysklad/api/remap/1.2/entity/accumulationdiscount/ENTITY_ID;MetaEntity;void +POST;https://test.moysklad/api/remap/1.2/entity/specialpricediscount/;MetaEntity;MetaEntity +GET;https://test.moysklad/api/remap/1.2/entity/accumulationdiscount/ENTITY_ID;MetaEntity,ApiParam[];AccumulationDiscount +DELETE;https://test.moysklad/api/remap/1.2/entity/accumulationdiscount/ID;String;void +PUT;https://test.moysklad/api/remap/1.2/entity/personaldiscount/ID;String,MetaEntity;void +POST;https://test.moysklad/api/remap/1.2/entity/bonusprogram/;MetaEntity;MetaEntity +PUT;https://test.moysklad/api/remap/1.2/entity/specialpricediscount/ID;String,MetaEntity;void +DELETE;https://test.moysklad/api/remap/1.2/entity/specialpricediscount/ID;String;void +GET;https://test.moysklad/api/remap/1.2/entity/discount/ENTITY_ID;MetaEntity,ApiParam[];RoundOffDiscount +PUT;https://test.moysklad/api/remap/1.2/entity/accumulationdiscount/ID;String,MetaEntity;void +POST;https://test.moysklad/api/remap/1.2/entity/personaldiscount/;MetaEntity;MetaEntity +DELETE;https://test.moysklad/api/remap/1.2/entity/personaldiscount/ENTITY_ID;MetaEntity;void +GET;https://test.moysklad/api/remap/1.2/entity/specialpricediscount/ENTITY_ID;MetaEntity,ApiParam[];SpecialPriceDiscount +PUT;https://test.moysklad/api/remap/1.2/entity/bonusprogram/ENTITY_ID;MetaEntity;void \ No newline at end of file From bdd07cba480934bdd2506b8c5ccdc11f232af6d3 Mon Sep 17 00:00:00 2001 From: strubitsyn Date: Fri, 24 Jul 2020 15:43:45 +0300 Subject: [PATCH 10/14] MC-34267 ignore test with problem --- .../java/com/lognex/api/entities/SimpleEntityManager.java | 2 +- src/test/java/com/lognex/api/entities/VariantTest.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/lognex/api/entities/SimpleEntityManager.java b/src/test/java/com/lognex/api/entities/SimpleEntityManager.java index dde1c72d..c7645ea9 100644 --- a/src/test/java/com/lognex/api/entities/SimpleEntityManager.java +++ b/src/test/java/com/lognex/api/entities/SimpleEntityManager.java @@ -340,7 +340,7 @@ public Uom createSimpleUom() throws IOException, ApiClientException { public Variant createSimpleVariant() throws IOException, ApiClientException { Variant variant = new Variant(); - variant.setProduct(createSimpleProduct()); + variant.setProduct(createSimple(Product.class)); Variant.Characteristic characteristic = new Variant.Characteristic(); characteristic.setName(randomString()); diff --git a/src/test/java/com/lognex/api/entities/VariantTest.java b/src/test/java/com/lognex/api/entities/VariantTest.java index b8598287..63a10603 100644 --- a/src/test/java/com/lognex/api/entities/VariantTest.java +++ b/src/test/java/com/lognex/api/entities/VariantTest.java @@ -5,6 +5,7 @@ import com.lognex.api.responses.ListEntity; import com.lognex.api.responses.metadata.VariantMetadataResponse; import com.lognex.api.utils.ApiClientException; +import org.junit.Ignore; import org.junit.Test; import java.io.IOException; @@ -102,6 +103,12 @@ protected void getAsserts(MetaEntity originalEntity, MetaEntity retrievedEntity) assertEquals(originalVariant.getCharacteristics().get(0), retrievedVariant.getCharacteristics().get(0)); } + @Ignore + @Override + public void massCreateDeleteTest() { + // удаление модификации может привести к удалению характеристики и падению при создании + } + @Override protected EntityClientBase entityClient() { return api.entity().variant(); From a76c0a226f7ad9c91e1f005d3af39ec4e802627b Mon Sep 17 00:00:00 2001 From: strubitsyn Date: Wed, 22 Jul 2020 18:37:00 +0300 Subject: [PATCH 11/14] MC-34258 sync fields with documentation --- .../java/com/lognex/api/entities/Country.java | 16 +++++++ .../lognex/api/entities/documents/CashIn.java | 2 - .../api/entities/documents/CashOut.java | 2 - .../documents/CommissionReportIn.java | 4 +- .../documents/CommissionReportOut.java | 4 +- .../api/entities/documents/CustomerOrder.java | 5 +- .../lognex/api/entities/documents/Demand.java | 4 +- .../entities/documents/DocumentPosition.java | 2 + .../lognex/api/entities/documents/Enter.java | 2 +- .../api/entities/documents/FactureIn.java | 23 +++------ .../api/entities/documents/FactureOut.java | 21 +++------ .../api/entities/documents/InternalOrder.java | 1 - .../api/entities/documents/Inventory.java | 17 +++++-- .../api/entities/documents/InvoiceIn.java | 13 +++-- .../api/entities/documents/InvoiceOut.java | 15 ++++-- .../lognex/api/entities/documents/Loss.java | 19 +++++--- .../lognex/api/entities/documents/Move.java | 13 +++-- .../api/entities/documents/PaymentIn.java | 1 - .../api/entities/documents/PaymentOut.java | 1 - .../api/entities/documents/Pricelist.java | 47 +++++++++++++++---- .../api/entities/documents/Processing.java | 1 - .../entities/documents/ProcessingOrder.java | 10 ++-- .../api/entities/documents/PurchaseOrder.java | 4 +- .../entities/documents/PurchaseReturn.java | 1 - .../api/entities/documents/RetailDemand.java | 10 +++- .../documents/RetailDrawerCashIn.java | 2 - .../documents/RetailDrawerCashOut.java | 2 - .../entities/documents/RetailSalesReturn.java | 7 ++- .../api/entities/documents/RetailShift.java | 1 - .../api/entities/documents/SalesReturn.java | 2 +- .../lognex/api/entities/documents/Supply.java | 5 +- .../CommissionReportDocumentPosition.java | 15 ++++++ .../CustomerOrderDocumentPosition.java | 17 +++++++ .../positions/DemandDocumentPosition.java | 18 +++++++ .../positions/DocumentPositionWithCost.java | 15 ++++++ .../positions/InventoryDocumentPosition.java | 17 +++++++ .../positions/LossDocumentPosition.java | 15 ++++++ .../PurchaseOrderDocumentPosition.java | 16 +++++++ .../positions/SupplyDocumentPosition.java | 17 +++++++ .../documents/positions/TrackingCode.java | 20 ++++++++ 40 files changed, 309 insertions(+), 98 deletions(-) create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/CommissionReportDocumentPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/CustomerOrderDocumentPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/DemandDocumentPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/DocumentPositionWithCost.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/InventoryDocumentPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/LossDocumentPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/PurchaseOrderDocumentPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/SupplyDocumentPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/TrackingCode.java diff --git a/src/main/java/com/lognex/api/entities/Country.java b/src/main/java/com/lognex/api/entities/Country.java index 4713cf6a..417e1257 100644 --- a/src/main/java/com/lognex/api/entities/Country.java +++ b/src/main/java/com/lognex/api/entities/Country.java @@ -1,5 +1,6 @@ package com.lognex.api.entities; +import com.lognex.api.entities.agents.Employee; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -36,6 +37,21 @@ public class Country extends MetaEntity { */ private String code; + /** + * Ссылка на Владельца (Сотрудника) в формате Метаданных + */ + private Employee owner; + + /** + * Общий доступ + */ + private Boolean shared; + + /** + * Отдел сотрудника в формате Метаданных + */ + private Group group; + public Country(String id) { super(id); } diff --git a/src/main/java/com/lognex/api/entities/documents/CashIn.java b/src/main/java/com/lognex/api/entities/documents/CashIn.java index cbbf8117..b9ae5094 100644 --- a/src/main/java/com/lognex/api/entities/documents/CashIn.java +++ b/src/main/java/com/lognex/api/entities/documents/CashIn.java @@ -4,7 +4,6 @@ import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceInDocumentMarker; -import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -20,7 +19,6 @@ public class CashIn extends DocumentEntity implements FinanceInDocumentMarker, IEntityWithAttributes { private Agent agent; private LocalDateTime created; - private ListEntity documents; private String externalCode; private Organization organization; private Project project; diff --git a/src/main/java/com/lognex/api/entities/documents/CashOut.java b/src/main/java/com/lognex/api/entities/documents/CashOut.java index a61c4e68..59c82142 100644 --- a/src/main/java/com/lognex/api/entities/documents/CashOut.java +++ b/src/main/java/com/lognex/api/entities/documents/CashOut.java @@ -4,7 +4,6 @@ import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceOutDocumentMarker; -import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -20,7 +19,6 @@ public class CashOut extends DocumentEntity implements FinanceOutDocumentMarker, IEntityWithAttributes { private Agent agent; private LocalDateTime created; - private ListEntity documents; private ExpenseItem expenseItem; private String externalCode; private Organization organization; diff --git a/src/main/java/com/lognex/api/entities/documents/CommissionReportIn.java b/src/main/java/com/lognex/api/entities/documents/CommissionReportIn.java index 1f501c2a..c443d648 100644 --- a/src/main/java/com/lognex/api/entities/documents/CommissionReportIn.java +++ b/src/main/java/com/lognex/api/entities/documents/CommissionReportIn.java @@ -4,6 +4,7 @@ import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceDocumentMarker; +import com.lognex.api.entities.documents.positions.CommissionReportDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -24,11 +25,10 @@ public class CommissionReportIn extends DocumentEntity implements IEntityWithAtt private Long commitentSum; private Contract contract; private LocalDateTime created; - private ListEntity documents; private String externalCode; private Organization organization; private Long payedSum; - private ListEntity positions; + private ListEntity positions; private Rate rate; private Double rewardPercent; private RewardType rewardType; diff --git a/src/main/java/com/lognex/api/entities/documents/CommissionReportOut.java b/src/main/java/com/lognex/api/entities/documents/CommissionReportOut.java index 585b7c02..dfb195a1 100644 --- a/src/main/java/com/lognex/api/entities/documents/CommissionReportOut.java +++ b/src/main/java/com/lognex/api/entities/documents/CommissionReportOut.java @@ -4,6 +4,7 @@ import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceDocumentMarker; +import com.lognex.api.entities.documents.positions.CommissionReportDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -24,12 +25,11 @@ public class CommissionReportOut extends DocumentEntity implements IEntityWithAt private Long commitentSum; private Contract contract; private LocalDateTime created; - private ListEntity documents; private String externalCode; private Organization organization; private AgentAccount organizationAccount; private Long payedSum; - private ListEntity positions; + private ListEntity positions; private Rate rate; private Double rewardPercent; private RewardType rewardType; diff --git a/src/main/java/com/lognex/api/entities/documents/CustomerOrder.java b/src/main/java/com/lognex/api/entities/documents/CustomerOrder.java index 03acec05..17993981 100644 --- a/src/main/java/com/lognex/api/entities/documents/CustomerOrder.java +++ b/src/main/java/com/lognex/api/entities/documents/CustomerOrder.java @@ -4,6 +4,7 @@ import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceDocumentMarker; +import com.lognex.api.entities.documents.positions.CustomerOrderDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -27,12 +28,11 @@ public class CustomerOrder extends DocumentEntity implements IEntityWithAttribut private LocalDateTime created; private LocalDateTime deleted; private String description; - private ListEntity documents; private String externalCode; private Long invoicedSum; private Organization organization; private Long payedSum; - private ListEntity positions; + private ListEntity positions; private Rate rate; private Long reservedSum; private Long shippedSum; @@ -51,6 +51,7 @@ public class CustomerOrder extends DocumentEntity implements IEntityWithAttribut private List demands; private List payments; private List invoicesOut; + private TaxSystem taxSystem; public CustomerOrder(String id) { super(id); diff --git a/src/main/java/com/lognex/api/entities/documents/Demand.java b/src/main/java/com/lognex/api/entities/documents/Demand.java index d6c5b9cd..c20df59a 100644 --- a/src/main/java/com/lognex/api/entities/documents/Demand.java +++ b/src/main/java/com/lognex/api/entities/documents/Demand.java @@ -4,6 +4,7 @@ import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceDocumentMarker; +import com.lognex.api.entities.documents.positions.DemandDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -30,13 +31,12 @@ public class Demand extends DocumentEntity implements IEntityWithAttributes { private CustomerOrder customerOrder; private LocalDateTime deleted; private String description; - private ListEntity documents; private String externalCode; private Organization organization; private AgentAccount organizationAccount; private Overhead overhead; private Long payedSum; - private ListEntity positions; + private ListEntity positions; private Project project; private Rate rate; private State state; diff --git a/src/main/java/com/lognex/api/entities/documents/DocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/DocumentPosition.java index 0c8a9d59..e966a18c 100644 --- a/src/main/java/com/lognex/api/entities/documents/DocumentPosition.java +++ b/src/main/java/com/lognex/api/entities/documents/DocumentPosition.java @@ -2,6 +2,7 @@ import com.lognex.api.entities.Country; import com.lognex.api.entities.MetaEntity; +import com.lognex.api.entities.products.Product; import com.lognex.api.entities.products.markers.ProductMarker; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -23,6 +24,7 @@ public class DocumentPosition extends MetaEntity { private Integer overhead; private Integer vat; private Double discount; + private Product.ProductPack pack; private List things; private Double reserve; } diff --git a/src/main/java/com/lognex/api/entities/documents/Enter.java b/src/main/java/com/lognex/api/entities/documents/Enter.java index 71dea6eb..96cde7de 100644 --- a/src/main/java/com/lognex/api/entities/documents/Enter.java +++ b/src/main/java/com/lognex/api/entities/documents/Enter.java @@ -20,10 +20,10 @@ @NoArgsConstructor @EqualsAndHashCode(callSuper = true) public class Enter extends DocumentEntity implements IEntityWithAttributes { + private Contract contract; private LocalDateTime created; private LocalDateTime deleted; private String description; - private ListEntity documents; private String externalCode; private Organization organization; private ListEntity positions; diff --git a/src/main/java/com/lognex/api/entities/documents/FactureIn.java b/src/main/java/com/lognex/api/entities/documents/FactureIn.java index c2eb2300..90be2a43 100644 --- a/src/main/java/com/lognex/api/entities/documents/FactureIn.java +++ b/src/main/java/com/lognex/api/entities/documents/FactureIn.java @@ -1,13 +1,9 @@ package com.lognex.api.entities.documents; -import com.lognex.api.entities.Attribute; -import com.lognex.api.entities.IEntityWithAttributes; -import com.lognex.api.entities.Rate; -import com.lognex.api.entities.State; +import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceOutDocumentMarker; -import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -34,11 +30,6 @@ public class FactureIn extends DocumentEntity implements IEntityWithAttributes { */ private String externalCode; - /** - * Печатные формы - */ - private ListEntity documents; - /** * Дата создания */ @@ -74,11 +65,6 @@ public class FactureIn extends DocumentEntity implements IEntityWithAttributes { */ private LocalDateTime incomingDate; - /** - * Флаг удалённого документа - */ - private Boolean isDeleted; - /** * Комментарий */ @@ -94,10 +80,13 @@ public class FactureIn extends DocumentEntity implements IEntityWithAttributes { */ private List attributes; + /** + * Контракт + */ + private Contract contract; + private String syncId; private LocalDateTime deleted; - private String stateContractId; - private Agent consignee; public FactureIn(String id) { super(id); diff --git a/src/main/java/com/lognex/api/entities/documents/FactureOut.java b/src/main/java/com/lognex/api/entities/documents/FactureOut.java index 8020212d..79ff20c3 100644 --- a/src/main/java/com/lognex/api/entities/documents/FactureOut.java +++ b/src/main/java/com/lognex/api/entities/documents/FactureOut.java @@ -1,13 +1,9 @@ package com.lognex.api.entities.documents; -import com.lognex.api.entities.Attribute; -import com.lognex.api.entities.IEntityWithAttributes; -import com.lognex.api.entities.Rate; -import com.lognex.api.entities.State; +import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceInDocumentMarker; -import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -39,11 +35,6 @@ public class FactureOut extends DocumentEntity implements IEntityWithAttributes */ private String externalCode; - /** - * Печатные формы - */ - private ListEntity documents; - /** * Дата создания */ @@ -89,11 +80,6 @@ public class FactureOut extends DocumentEntity implements IEntityWithAttributes */ private List returns; - /** - * Флаг удалённого документа - */ - private Boolean isDeleted; - /** * Комментарий */ @@ -109,6 +95,11 @@ public class FactureOut extends DocumentEntity implements IEntityWithAttributes */ private List attributes; + /** + * Контракт + */ + private Contract contract; + private String syncId; private LocalDateTime deleted; diff --git a/src/main/java/com/lognex/api/entities/documents/InternalOrder.java b/src/main/java/com/lognex/api/entities/documents/InternalOrder.java index 41938b93..df37004e 100644 --- a/src/main/java/com/lognex/api/entities/documents/InternalOrder.java +++ b/src/main/java/com/lognex/api/entities/documents/InternalOrder.java @@ -17,7 +17,6 @@ @EqualsAndHashCode(callSuper = true) public class InternalOrder extends DocumentEntity implements IEntityWithAttributes { private LocalDateTime created; - private ListEntity documents; private String externalCode; private Organization organization; private ListEntity positions; diff --git a/src/main/java/com/lognex/api/entities/documents/Inventory.java b/src/main/java/com/lognex/api/entities/documents/Inventory.java index 9c7e492a..b0e345bb 100644 --- a/src/main/java/com/lognex/api/entities/documents/Inventory.java +++ b/src/main/java/com/lognex/api/entities/documents/Inventory.java @@ -1,23 +1,34 @@ package com.lognex.api.entities.documents; +import com.lognex.api.entities.Attribute; +import com.lognex.api.entities.IEntityWithAttributes; +import com.lognex.api.entities.State; import com.lognex.api.entities.Store; import com.lognex.api.entities.agents.Organization; +import com.lognex.api.entities.documents.positions.InventoryDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import java.time.LocalDateTime; +import java.util.List; + @Getter @Setter @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public class Inventory extends DocumentEntity { - private ListEntity documents; +public class Inventory extends DocumentEntity implements IEntityWithAttributes { + private List attributes; + private LocalDateTime created; + private LocalDateTime deleted; private String externalCode; private Organization organization; - private ListEntity positions; + private ListEntity positions; + private State state; private Store store; + private String syncId; public Inventory(String id) { super(id); diff --git a/src/main/java/com/lognex/api/entities/documents/InvoiceIn.java b/src/main/java/com/lognex/api/entities/documents/InvoiceIn.java index b6d2d5da..a794fb72 100644 --- a/src/main/java/com/lognex/api/entities/documents/InvoiceIn.java +++ b/src/main/java/com/lognex/api/entities/documents/InvoiceIn.java @@ -1,7 +1,6 @@ package com.lognex.api.entities.documents; -import com.lognex.api.entities.Rate; -import com.lognex.api.entities.Store; +import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.responses.ListEntity; @@ -18,16 +17,24 @@ @EqualsAndHashCode(callSuper = true) public class InvoiceIn extends DocumentEntity { private Agent agent; + private AgentAccount agentAccount; + private Contract contract; private LocalDateTime created; - private ListEntity documents; + private LocalDateTime deleted; + private String description; private String externalCode; private String incomingNumber; + private LocalDateTime incomingDate; private Organization organization; + private AgentAccount organizationAccount; private Long payedSum; + private LocalDateTime paymentPlannedMoment; private ListEntity positions; private Rate rate; private Long shippedSum; + private State state; private Store store; + private String syncId; private Boolean vatEnabled; private Boolean vatIncluded; private Long vatSum; diff --git a/src/main/java/com/lognex/api/entities/documents/InvoiceOut.java b/src/main/java/com/lognex/api/entities/documents/InvoiceOut.java index 07f8d42e..27d00d7a 100644 --- a/src/main/java/com/lognex/api/entities/documents/InvoiceOut.java +++ b/src/main/java/com/lognex/api/entities/documents/InvoiceOut.java @@ -1,7 +1,6 @@ package com.lognex.api.entities.documents; -import com.lognex.api.entities.Rate; -import com.lognex.api.entities.Store; +import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.responses.ListEntity; @@ -11,6 +10,7 @@ import lombok.Setter; import java.time.LocalDateTime; +import java.util.List; @Getter @Setter @@ -18,15 +18,24 @@ @EqualsAndHashCode(callSuper = true) public class InvoiceOut extends DocumentEntity { private Agent agent; + private AgentAccount agentAccount; + private List attributes; + private Contract contract; private LocalDateTime created; - private ListEntity documents; + private LocalDateTime deleted; + private String description; private String externalCode; private Organization organization; + private AgentAccount organizationAccount; private Long payedSum; + private LocalDateTime paymentPlannedMoment; private ListEntity positions; + private Project project; private Rate rate; private Long shippedSum; + private State state; private Store store; + private String syncId; private Boolean vatEnabled; private Boolean vatIncluded; private Long vatSum; diff --git a/src/main/java/com/lognex/api/entities/documents/Loss.java b/src/main/java/com/lognex/api/entities/documents/Loss.java index 124ec094..c96de771 100644 --- a/src/main/java/com/lognex/api/entities/documents/Loss.java +++ b/src/main/java/com/lognex/api/entities/documents/Loss.java @@ -1,9 +1,8 @@ package com.lognex.api.entities.documents; -import com.lognex.api.entities.Rate; -import com.lognex.api.entities.State; -import com.lognex.api.entities.Store; +import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; +import com.lognex.api.entities.documents.positions.LossDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -11,22 +10,30 @@ import lombok.Setter; import java.time.LocalDateTime; +import java.util.List; @Getter @Setter @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public class Loss extends DocumentEntity { +public class Loss extends DocumentEntity implements IEntityWithAttributes { + private Agent agent; + private List attributes; private LocalDateTime created; + private Contract contract; + private LocalDateTime deleted; private String description; - private ListEntity documents; private String externalCode; private Agent organization; - private ListEntity positions; + private ListEntity positions; + private Project project; private Rate rate; private State state; private Store store; + private String syncId; private SalesReturn salesReturn; + private Boolean vatEnabled; + private Boolean vatIncluded; public Loss(String id) { super(id); diff --git a/src/main/java/com/lognex/api/entities/documents/Move.java b/src/main/java/com/lognex/api/entities/documents/Move.java index 2a595d23..fc1ff726 100644 --- a/src/main/java/com/lognex/api/entities/documents/Move.java +++ b/src/main/java/com/lognex/api/entities/documents/Move.java @@ -1,8 +1,6 @@ package com.lognex.api.entities.documents; -import com.lognex.api.entities.Rate; -import com.lognex.api.entities.State; -import com.lognex.api.entities.Store; +import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; @@ -11,21 +9,26 @@ import lombok.Setter; import java.time.LocalDateTime; +import java.util.List; @Getter @Setter @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public class Move extends DocumentEntity { +public class Move extends DocumentEntity implements IEntityWithAttributes { + private List attributes; private LocalDateTime created; + private LocalDateTime deleted; private String description; - private ListEntity documents; private String externalCode; private Agent organization; + private Overhead overhead; private ListEntity positions; + private Project project; private Rate rate; private Store sourceStore; private State state; + private String syncId; private Store targetStore; private InternalOrder internalOrder; diff --git a/src/main/java/com/lognex/api/entities/documents/PaymentIn.java b/src/main/java/com/lognex/api/entities/documents/PaymentIn.java index bccf03e4..65503007 100644 --- a/src/main/java/com/lognex/api/entities/documents/PaymentIn.java +++ b/src/main/java/com/lognex/api/entities/documents/PaymentIn.java @@ -20,7 +20,6 @@ public class PaymentIn extends DocumentEntity implements FinanceInDocumentMarker, IEntityWithAttributes { private Agent agent; private LocalDateTime created; - private ListEntity documents; private String externalCode; private Organization organization; private Project project; diff --git a/src/main/java/com/lognex/api/entities/documents/PaymentOut.java b/src/main/java/com/lognex/api/entities/documents/PaymentOut.java index 84c297db..b4ff8a39 100644 --- a/src/main/java/com/lognex/api/entities/documents/PaymentOut.java +++ b/src/main/java/com/lognex/api/entities/documents/PaymentOut.java @@ -20,7 +20,6 @@ public class PaymentOut extends DocumentEntity implements FinanceOutDocumentMarker, IEntityWithAttributes { private Agent agent; private LocalDateTime created; - private ListEntity documents; private ExpenseItem expenseItem; private String externalCode; private Organization organization; diff --git a/src/main/java/com/lognex/api/entities/documents/Pricelist.java b/src/main/java/com/lognex/api/entities/documents/Pricelist.java index 147471c1..9dc69ba1 100644 --- a/src/main/java/com/lognex/api/entities/documents/Pricelist.java +++ b/src/main/java/com/lognex/api/entities/documents/Pricelist.java @@ -1,8 +1,8 @@ package com.lognex.api.entities.documents; -import com.lognex.api.entities.MetaEntity; -import com.lognex.api.entities.PriceType; +import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Organization; +import com.lognex.api.entities.products.Product; import com.lognex.api.entities.products.markers.SingleProductMarker; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; @@ -10,23 +10,19 @@ import lombok.NoArgsConstructor; import lombok.Setter; +import java.time.LocalDateTime; import java.util.List; @Getter @Setter @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public class Pricelist extends DocumentEntity { +public class Pricelist extends DocumentEntity implements IEntityWithAttributes { /** * Внешний код */ private String externalCode; - /** - * Печатные формы - */ - private ListEntity documents; - /** * Тип цены */ @@ -47,6 +43,36 @@ public class Pricelist extends DocumentEntity { */ private List columns; + /** + * ID синхронизации + */ + private String syncId; + + /** + * Дата создания + */ + private LocalDateTime created; + + /** + * Дата удаления + */ + private LocalDateTime deleted; + + /** + * Комментарий + */ + private String description; + + /** + * Статус договора в формате Метаданных + */ + private State state; + + /** + * Коллекция доп. полей + */ + private List attributes; + public Pricelist(String id) { super(id); } @@ -66,6 +92,11 @@ public static class PricelistRow extends MetaEntity { */ private SingleProductMarker assortment; + /** + * Упаковка товара + */ + private Product.ProductPack pack; + @Getter @Setter @NoArgsConstructor diff --git a/src/main/java/com/lognex/api/entities/documents/Processing.java b/src/main/java/com/lognex/api/entities/documents/Processing.java index dbcf130d..1aea9fe2 100644 --- a/src/main/java/com/lognex/api/entities/documents/Processing.java +++ b/src/main/java/com/lognex/api/entities/documents/Processing.java @@ -17,7 +17,6 @@ @EqualsAndHashCode(callSuper = true) public class Processing extends DocumentEntity implements IEntityWithAttributes { private LocalDateTime created; - private ListEntity documents; private String externalCode; private ListEntity materials; private Store materialsStore; diff --git a/src/main/java/com/lognex/api/entities/documents/ProcessingOrder.java b/src/main/java/com/lognex/api/entities/documents/ProcessingOrder.java index 6fb5c586..9d6e77a0 100644 --- a/src/main/java/com/lognex/api/entities/documents/ProcessingOrder.java +++ b/src/main/java/com/lognex/api/entities/documents/ProcessingOrder.java @@ -1,9 +1,6 @@ package com.lognex.api.entities.documents; -import com.lognex.api.entities.AgentAccount; -import com.lognex.api.entities.Project; -import com.lognex.api.entities.State; -import com.lognex.api.entities.Store; +import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; @@ -18,9 +15,9 @@ @Setter @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public class ProcessingOrder extends DocumentEntity { +public class ProcessingOrder extends DocumentEntity implements IEntityWithAttributes { + private List attributes; private String description; - private ListEntity documents; private String externalCode; private Agent organization; private ListEntity positions; @@ -29,6 +26,7 @@ public class ProcessingOrder extends DocumentEntity { private State state; private Store store; private String syncId; + private LocalDateTime created; private LocalDateTime deleted; private AgentAccount organizationAccount; private LocalDateTime deliveryPlannedMoment; diff --git a/src/main/java/com/lognex/api/entities/documents/PurchaseOrder.java b/src/main/java/com/lognex/api/entities/documents/PurchaseOrder.java index ec071dcd..6c78e1c1 100644 --- a/src/main/java/com/lognex/api/entities/documents/PurchaseOrder.java +++ b/src/main/java/com/lognex/api/entities/documents/PurchaseOrder.java @@ -4,6 +4,7 @@ import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceDocumentMarker; +import com.lognex.api.entities.documents.positions.PurchaseOrderDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -22,12 +23,11 @@ public class PurchaseOrder extends DocumentEntity implements IEntityWithAttribut private Contract contract; private LocalDateTime created; private String description; - private ListEntity documents; private String externalCode; private Long invoicedSum; private Organization organization; private Long payedSum; - private ListEntity positions; + private ListEntity positions; private Rate rate; private Long shippedSum; private State state; diff --git a/src/main/java/com/lognex/api/entities/documents/PurchaseReturn.java b/src/main/java/com/lognex/api/entities/documents/PurchaseReturn.java index b4da2363..b714399e 100644 --- a/src/main/java/com/lognex/api/entities/documents/PurchaseReturn.java +++ b/src/main/java/com/lognex/api/entities/documents/PurchaseReturn.java @@ -19,7 +19,6 @@ public class PurchaseReturn extends DocumentEntity implements IEntityWithAttributes { private Agent agent; private LocalDateTime created; - private ListEntity documents; private String externalCode; private Agent organization; private Long payedSum; diff --git a/src/main/java/com/lognex/api/entities/documents/RetailDemand.java b/src/main/java/com/lognex/api/entities/documents/RetailDemand.java index e6b85e05..57954f01 100644 --- a/src/main/java/com/lognex/api/entities/documents/RetailDemand.java +++ b/src/main/java/com/lognex/api/entities/documents/RetailDemand.java @@ -3,6 +3,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; +import com.lognex.api.entities.documents.positions.DocumentPositionWithCost; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -20,13 +21,12 @@ public class RetailDemand extends DocumentEntity implements IEntityWithAttribute private Agent agent; private Long cashSum; private LocalDateTime created; - private ListEntity documents; private String externalCode; private Boolean fiscal; private Long noCashSum; private Organization organization; private Long payedSum; - private ListEntity positions; + private ListEntity positions; private Rate rate; private RetailShift retailShift; private RetailStore retailStore; @@ -47,6 +47,12 @@ public class RetailDemand extends DocumentEntity implements IEntityWithAttribute private String sessionNumber; private String ofdCode; private CustomerOrder customerOrder; + private Contract contract; + private Long prepaymentCashSum; + private Long prepaymentNoCashSum; + private Project project; + private State state; + private TaxSystem taxSystem; public RetailDemand(String id) { super(id); diff --git a/src/main/java/com/lognex/api/entities/documents/RetailDrawerCashIn.java b/src/main/java/com/lognex/api/entities/documents/RetailDrawerCashIn.java index a6864f9e..86e2bf10 100644 --- a/src/main/java/com/lognex/api/entities/documents/RetailDrawerCashIn.java +++ b/src/main/java/com/lognex/api/entities/documents/RetailDrawerCashIn.java @@ -6,7 +6,6 @@ import com.lognex.api.entities.State; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; -import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -23,7 +22,6 @@ public class RetailDrawerCashIn extends DocumentEntity implements IEntityWithAtt private Agent agent; private LocalDateTime created; private String description; - private ListEntity documents; private String externalCode; private Organization organization; private Rate rate; diff --git a/src/main/java/com/lognex/api/entities/documents/RetailDrawerCashOut.java b/src/main/java/com/lognex/api/entities/documents/RetailDrawerCashOut.java index 19230bb5..e272e236 100644 --- a/src/main/java/com/lognex/api/entities/documents/RetailDrawerCashOut.java +++ b/src/main/java/com/lognex/api/entities/documents/RetailDrawerCashOut.java @@ -6,7 +6,6 @@ import com.lognex.api.entities.State; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; -import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -23,7 +22,6 @@ public class RetailDrawerCashOut extends DocumentEntity implements IEntityWithAt private Agent agent; private LocalDateTime created; private String description; - private ListEntity documents; private String externalCode; private Organization organization; private Rate rate; diff --git a/src/main/java/com/lognex/api/entities/documents/RetailSalesReturn.java b/src/main/java/com/lognex/api/entities/documents/RetailSalesReturn.java index c206bd74..ffcc9595 100644 --- a/src/main/java/com/lognex/api/entities/documents/RetailSalesReturn.java +++ b/src/main/java/com/lognex/api/entities/documents/RetailSalesReturn.java @@ -2,6 +2,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; +import com.lognex.api.entities.documents.positions.DocumentPositionWithCost; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -20,11 +21,10 @@ public class RetailSalesReturn extends DocumentEntity implements IEntityWithAttr private Long cashSum; private LocalDateTime created; private RetailDemand demand; - private ListEntity documents; private String externalCode; private Long noCashSum; private Agent organization; - private ListEntity positions; + private ListEntity positions; private Rate rate; private RetailShift retailShift; private RetailStore retailStore; @@ -39,6 +39,9 @@ public class RetailSalesReturn extends DocumentEntity implements IEntityWithAttr private AgentAccount organizationAccount; private AgentAccount agentAccount; private List attributes; + private Contract contract; + private State state; + private TaxSystem taxSystem; public RetailSalesReturn(String id) { super(id); diff --git a/src/main/java/com/lognex/api/entities/documents/RetailShift.java b/src/main/java/com/lognex/api/entities/documents/RetailShift.java index 18c9b48e..c76af111 100644 --- a/src/main/java/com/lognex/api/entities/documents/RetailShift.java +++ b/src/main/java/com/lognex/api/entities/documents/RetailShift.java @@ -17,7 +17,6 @@ @EqualsAndHashCode(callSuper = true) public class RetailShift extends DocumentEntity { private String externalCode; - private ListEntity documents; private LocalDateTime created; private LocalDateTime closeDate; private Double receivedCash; diff --git a/src/main/java/com/lognex/api/entities/documents/SalesReturn.java b/src/main/java/com/lognex/api/entities/documents/SalesReturn.java index 7467baf6..5fc9fb3b 100644 --- a/src/main/java/com/lognex/api/entities/documents/SalesReturn.java +++ b/src/main/java/com/lognex/api/entities/documents/SalesReturn.java @@ -22,12 +22,12 @@ public class SalesReturn extends DocumentEntity implements IEntityWithAttributes private LocalDateTime created; private Demand demand; private String description; - private ListEntity documents; private String externalCode; private Organization organization; private Long payedSum; private ListEntity positions; private Rate rate; + private State state; private Store store; private Boolean vatEnabled; private Boolean vatIncluded; diff --git a/src/main/java/com/lognex/api/entities/documents/Supply.java b/src/main/java/com/lognex/api/entities/documents/Supply.java index 0df25b21..3f6d0601 100644 --- a/src/main/java/com/lognex/api/entities/documents/Supply.java +++ b/src/main/java/com/lognex/api/entities/documents/Supply.java @@ -4,6 +4,7 @@ import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceDocumentMarker; +import com.lognex.api.entities.documents.positions.SupplyDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -21,12 +22,11 @@ public class Supply extends DocumentEntity implements IEntityWithAttributes { private Agent agent; private Contract contract; private LocalDateTime created; - private ListEntity documents; private String externalCode; private Organization organization; private Overhead overhead; private Long payedSum; - private ListEntity positions; + private ListEntity positions; private PurchaseOrder purchaseOrder; private Rate rate; private Store store; @@ -37,6 +37,7 @@ public class Supply extends DocumentEntity implements IEntityWithAttributes { private LocalDateTime deleted; private String description; private Project project; + private State state; private AgentAccount organizationAccount; private AgentAccount agentAccount; private List attributes; diff --git a/src/main/java/com/lognex/api/entities/documents/positions/CommissionReportDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/CommissionReportDocumentPosition.java new file mode 100644 index 00000000..3600adfd --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/CommissionReportDocumentPosition.java @@ -0,0 +1,15 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class CommissionReportDocumentPosition extends DocumentPosition { + Double reward; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/CustomerOrderDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/CustomerOrderDocumentPosition.java new file mode 100644 index 00000000..e81536d0 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/CustomerOrderDocumentPosition.java @@ -0,0 +1,17 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import com.lognex.api.entities.products.GoodTaxSystem; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class CustomerOrderDocumentPosition extends DocumentPosition { + private Long shipped; + private GoodTaxSystem taxSystem; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/DemandDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/DemandDocumentPosition.java new file mode 100644 index 00000000..3f9b0533 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/DemandDocumentPosition.java @@ -0,0 +1,18 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class DemandDocumentPosition extends DocumentPosition { + List trackingCodes; + private Long cost; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/DocumentPositionWithCost.java b/src/main/java/com/lognex/api/entities/documents/positions/DocumentPositionWithCost.java new file mode 100644 index 00000000..fb232ada --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/DocumentPositionWithCost.java @@ -0,0 +1,15 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class DocumentPositionWithCost extends DocumentPosition { + Long cost; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/InventoryDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/InventoryDocumentPosition.java new file mode 100644 index 00000000..84b30294 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/InventoryDocumentPosition.java @@ -0,0 +1,17 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class InventoryDocumentPosition extends DocumentPosition { + private Long calculatedQuantity; + private Long correctionAmount; + private Long correctionSum; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/LossDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/LossDocumentPosition.java new file mode 100644 index 00000000..f7004111 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/LossDocumentPosition.java @@ -0,0 +1,15 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class LossDocumentPosition extends DocumentPosition { + String reason; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/PurchaseOrderDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/PurchaseOrderDocumentPosition.java new file mode 100644 index 00000000..330c4bc6 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/PurchaseOrderDocumentPosition.java @@ -0,0 +1,16 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class PurchaseOrderDocumentPosition extends DocumentPosition { + private Long shipped; + private Long wait; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/SupplyDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/SupplyDocumentPosition.java new file mode 100644 index 00000000..58cc8991 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/SupplyDocumentPosition.java @@ -0,0 +1,17 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SupplyDocumentPosition extends DocumentPosition { + List trackingCodes; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/TrackingCode.java b/src/main/java/com/lognex/api/entities/documents/positions/TrackingCode.java new file mode 100644 index 00000000..f5212a0d --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/TrackingCode.java @@ -0,0 +1,20 @@ +package com.lognex.api.entities.documents.positions; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode +public class TrackingCode { + String cis; + TrackingCodeType type; + List trackingCodes; + + public enum TrackingCodeType {transportpack, trackingcode} +} From 4783fe64a9ffc7eec32c9d3270a344d32fd9ae56 Mon Sep 17 00:00:00 2001 From: strubitsyn Date: Wed, 22 Jul 2020 20:11:52 +0300 Subject: [PATCH 12/14] MC-34258 split DocumentPosition --- .../documents/CommissionReportInClient.java | 8 ++- .../documents/CommissionReportOutClient.java | 8 ++- .../documents/CustomerOrderClient.java | 8 ++- .../api/clients/documents/DemandClient.java | 8 ++- .../api/clients/documents/EnterClient.java | 8 ++- .../documents/InternalOrderClient.java | 9 ++- .../clients/documents/InventoryClient.java | 8 ++- .../clients/documents/InvoiceInClient.java | 9 ++- .../clients/documents/InvoiceOutClient.java | 8 ++- .../api/clients/documents/LossClient.java | 8 ++- .../api/clients/documents/MoveClient.java | 8 ++- .../documents/PurchaseOrderClient.java | 8 ++- .../documents/PurchaseReturnClient.java | 8 ++- .../clients/documents/SalesReturnClient.java | 8 ++- .../api/clients/documents/SupplyClient.java | 8 ++- .../endpoints/DocumentPositionsEndpoint.java | 42 ++++++------- .../com/lognex/api/entities/AgentAccount.java | 1 - .../entities/documents/DocumentEntity.java | 6 +- .../entities/documents/DocumentPosition.java | 14 +---- .../lognex/api/entities/documents/Enter.java | 3 +- .../api/entities/documents/InternalOrder.java | 3 +- .../api/entities/documents/InvoiceIn.java | 3 +- .../api/entities/documents/InvoiceOut.java | 3 +- .../lognex/api/entities/documents/Move.java | 3 +- .../api/entities/documents/PaymentIn.java | 1 - .../api/entities/documents/PaymentOut.java | 1 - .../api/entities/documents/Prepayment.java | 3 +- .../entities/documents/PrepaymentReturn.java | 3 +- .../entities/documents/ProcessingOrder.java | 3 +- .../entities/documents/PurchaseReturn.java | 3 +- .../api/entities/documents/RetailDemand.java | 4 +- .../entities/documents/RetailSalesReturn.java | 4 +- .../api/entities/documents/RetailShift.java | 1 - .../api/entities/documents/SalesReturn.java | 3 +- .../CommissionReportDocumentPosition.java | 3 +- .../CustomerOrderDocumentPosition.java | 3 + .../positions/DemandDocumentPosition.java | 5 +- .../positions/EnterDocumentPosition.java | 23 +++++++ ...ava => InternalOrderDocumentPosition.java} | 4 +- .../positions/InventoryDocumentPosition.java | 6 +- .../positions/InvoiceDocumentPosition.java | 16 +++++ .../positions/LossDocumentPosition.java | 5 +- .../positions/MoveDocumentPosition.java | 18 ++++++ .../positions/PrepaymentDocumentPosition.java | 16 +++++ .../positions/ProcessingOrderPosition.java | 20 +++++++ .../PurchaseOrderDocumentPosition.java | 2 + .../PurchaseReturnDocumentPosition.java | 19 ++++++ .../RetailSalesDocumentPosition.java | 20 +++++++ .../SalesReturnDocumentPosition.java | 24 ++++++++ .../positions/SupplyDocumentPosition.java | 10 +++- .../notifications/NotificationExchange.java | 1 - .../lognex/api/entities/products/Product.java | 1 - .../lognex/api/entities/products/Service.java | 1 - .../com/lognex/api/responses/ListEntity.java | 5 ++ .../java/com/lognex/api/EndpointsTest.java | 4 +- .../com/lognex/api/entities/DiscountTest.java | 2 - .../api/entities/SimpleEntityManager.java | 3 +- .../documents/CommissionReportInTest.java | 17 +++++- .../DocumentWithPositionsTestBase.java | 18 ++++-- .../api/entities/documents/EnterTest.java | 17 ++++++ .../api/entities/documents/InventoryTest.java | 21 ++++++- .../api/entities/documents/LossTest.java | 11 ++++ .../documents/ProcessingOrderTest.java | 3 +- .../com/lognex/api/schema/SchemaMapper.java | 2 - .../EnumSwitchCaseSerializerTest.java | 5 -- src/test/resources/methods.csv | 60 +++++++++---------- 66 files changed, 460 insertions(+), 131 deletions(-) create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/EnterDocumentPosition.java rename src/main/java/com/lognex/api/entities/documents/positions/{DocumentPositionWithCost.java => InternalOrderDocumentPosition.java} (75%) create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/InvoiceDocumentPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/MoveDocumentPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/PrepaymentDocumentPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/ProcessingOrderPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/PurchaseReturnDocumentPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/RetailSalesDocumentPosition.java create mode 100644 src/main/java/com/lognex/api/entities/documents/positions/SalesReturnDocumentPosition.java diff --git a/src/main/java/com/lognex/api/clients/documents/CommissionReportInClient.java b/src/main/java/com/lognex/api/clients/documents/CommissionReportInClient.java index 51918352..4f5b5475 100644 --- a/src/main/java/com/lognex/api/clients/documents/CommissionReportInClient.java +++ b/src/main/java/com/lognex/api/clients/documents/CommissionReportInClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.CommissionReportIn; +import com.lognex.api.entities.documents.positions.CommissionReportDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class CommissionReportInClient @@ -18,7 +19,7 @@ public final class CommissionReportInClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { @@ -36,4 +37,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return CommissionReportDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/CommissionReportOutClient.java b/src/main/java/com/lognex/api/clients/documents/CommissionReportOutClient.java index 9a317dc4..30f67321 100644 --- a/src/main/java/com/lognex/api/clients/documents/CommissionReportOutClient.java +++ b/src/main/java/com/lognex/api/clients/documents/CommissionReportOutClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.CommissionReportOut; +import com.lognex.api.entities.documents.positions.CommissionReportDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class CommissionReportOutClient @@ -18,7 +19,7 @@ public final class CommissionReportOutClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { @@ -36,4 +37,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return CommissionReportDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/CustomerOrderClient.java b/src/main/java/com/lognex/api/clients/documents/CustomerOrderClient.java index 8b931122..b84c7bc4 100644 --- a/src/main/java/com/lognex/api/clients/documents/CustomerOrderClient.java +++ b/src/main/java/com/lognex/api/clients/documents/CustomerOrderClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.CustomerOrder; +import com.lognex.api.entities.documents.positions.CustomerOrderDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class CustomerOrderClient @@ -17,7 +18,7 @@ public final class CustomerOrderClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { @@ -35,4 +36,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return CustomerOrderDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/DemandClient.java b/src/main/java/com/lognex/api/clients/documents/DemandClient.java index d8b07853..e0aff1fc 100644 --- a/src/main/java/com/lognex/api/clients/documents/DemandClient.java +++ b/src/main/java/com/lognex/api/clients/documents/DemandClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.Demand; +import com.lognex.api.entities.documents.positions.DemandDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class DemandClient @@ -19,7 +20,7 @@ public final class DemandClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { @@ -37,4 +38,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return DemandDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/EnterClient.java b/src/main/java/com/lognex/api/clients/documents/EnterClient.java index e46dafb5..162a08ed 100644 --- a/src/main/java/com/lognex/api/clients/documents/EnterClient.java +++ b/src/main/java/com/lognex/api/clients/documents/EnterClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.Enter; +import com.lognex.api.entities.documents.positions.EnterDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class EnterClient @@ -18,7 +19,7 @@ public final class EnterClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { @@ -36,4 +37,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return EnterDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/InternalOrderClient.java b/src/main/java/com/lognex/api/clients/documents/InternalOrderClient.java index fbac44d1..8561a684 100644 --- a/src/main/java/com/lognex/api/clients/documents/InternalOrderClient.java +++ b/src/main/java/com/lognex/api/clients/documents/InternalOrderClient.java @@ -4,7 +4,9 @@ import com.lognex.api.clients.EntityClientBase; import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; +import com.lognex.api.entities.documents.DocumentPosition; import com.lognex.api.entities.documents.InternalOrder; +import com.lognex.api.entities.documents.positions.InternalOrderDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class InternalOrderClient @@ -19,7 +21,7 @@ public final class InternalOrderClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { @@ -37,4 +39,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return InternalOrderDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/InventoryClient.java b/src/main/java/com/lognex/api/clients/documents/InventoryClient.java index dbe8102f..e74bb99c 100644 --- a/src/main/java/com/lognex/api/clients/documents/InventoryClient.java +++ b/src/main/java/com/lognex/api/clients/documents/InventoryClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.Inventory; +import com.lognex.api.entities.documents.positions.InventoryDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class InventoryClient @@ -18,7 +19,7 @@ public final class InventoryClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint { @@ -35,4 +36,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return InventoryDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/InvoiceInClient.java b/src/main/java/com/lognex/api/clients/documents/InvoiceInClient.java index 4955566e..42f90199 100644 --- a/src/main/java/com/lognex/api/clients/documents/InvoiceInClient.java +++ b/src/main/java/com/lognex/api/clients/documents/InvoiceInClient.java @@ -4,7 +4,9 @@ import com.lognex.api.clients.EntityClientBase; import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; +import com.lognex.api.entities.documents.DocumentPosition; import com.lognex.api.entities.documents.InvoiceIn; +import com.lognex.api.entities.documents.positions.InvoiceDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class InvoiceInClient @@ -18,7 +20,7 @@ public final class InvoiceInClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint { @@ -35,4 +37,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return InvoiceDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/InvoiceOutClient.java b/src/main/java/com/lognex/api/clients/documents/InvoiceOutClient.java index db0c4a93..d2cd8a61 100644 --- a/src/main/java/com/lognex/api/clients/documents/InvoiceOutClient.java +++ b/src/main/java/com/lognex/api/clients/documents/InvoiceOutClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.InvoiceOut; +import com.lognex.api.entities.documents.positions.InvoiceDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class InvoiceOutClient @@ -18,7 +19,7 @@ public final class InvoiceOutClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint { @@ -35,4 +36,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return InvoiceDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/LossClient.java b/src/main/java/com/lognex/api/clients/documents/LossClient.java index e93c3918..7264964a 100644 --- a/src/main/java/com/lognex/api/clients/documents/LossClient.java +++ b/src/main/java/com/lognex/api/clients/documents/LossClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.Loss; +import com.lognex.api.entities.documents.positions.LossDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class LossClient @@ -19,7 +20,7 @@ public final class LossClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { @@ -37,4 +38,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return LossDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/MoveClient.java b/src/main/java/com/lognex/api/clients/documents/MoveClient.java index 3b03bd88..a7bea936 100644 --- a/src/main/java/com/lognex/api/clients/documents/MoveClient.java +++ b/src/main/java/com/lognex/api/clients/documents/MoveClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.Move; +import com.lognex.api.entities.documents.positions.MoveDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class MoveClient @@ -19,7 +20,7 @@ public final class MoveClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { @@ -37,4 +38,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return MoveDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/PurchaseOrderClient.java b/src/main/java/com/lognex/api/clients/documents/PurchaseOrderClient.java index 73d935f4..60b28e9d 100644 --- a/src/main/java/com/lognex/api/clients/documents/PurchaseOrderClient.java +++ b/src/main/java/com/lognex/api/clients/documents/PurchaseOrderClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.PurchaseOrder; +import com.lognex.api.entities.documents.positions.PurchaseOrderDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class PurchaseOrderClient @@ -19,7 +20,7 @@ public final class PurchaseOrderClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { @@ -37,4 +38,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return PurchaseOrderDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/PurchaseReturnClient.java b/src/main/java/com/lognex/api/clients/documents/PurchaseReturnClient.java index 4f85ba77..d7a6b4c0 100644 --- a/src/main/java/com/lognex/api/clients/documents/PurchaseReturnClient.java +++ b/src/main/java/com/lognex/api/clients/documents/PurchaseReturnClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.PurchaseReturn; +import com.lognex.api.entities.documents.positions.PurchaseReturnDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class PurchaseReturnClient @@ -19,7 +20,7 @@ public final class PurchaseReturnClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint, HasStatesEndpoint { @@ -37,4 +38,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return PurchaseReturnDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/SalesReturnClient.java b/src/main/java/com/lognex/api/clients/documents/SalesReturnClient.java index d579a131..6d7c4b8e 100644 --- a/src/main/java/com/lognex/api/clients/documents/SalesReturnClient.java +++ b/src/main/java/com/lognex/api/clients/documents/SalesReturnClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.SalesReturn; +import com.lognex.api.entities.documents.positions.SalesReturnDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class SalesReturnClient @@ -19,7 +20,7 @@ public final class SalesReturnClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint { @@ -36,4 +37,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return SalesReturnDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/documents/SupplyClient.java b/src/main/java/com/lognex/api/clients/documents/SupplyClient.java index 13ef57f9..edb87f3f 100644 --- a/src/main/java/com/lognex/api/clients/documents/SupplyClient.java +++ b/src/main/java/com/lognex/api/clients/documents/SupplyClient.java @@ -5,6 +5,7 @@ import com.lognex.api.clients.endpoints.*; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.documents.Supply; +import com.lognex.api.entities.documents.positions.SupplyDocumentPosition; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; public final class SupplyClient @@ -19,7 +20,7 @@ public final class SupplyClient GetByIdEndpoint, PutByIdEndpoint, MassCreateUpdateDeleteEndpoint, - DocumentPositionsEndpoint, + DocumentPositionsEndpoint, ExportEndpoint, PublicationEndpoint { @@ -36,4 +37,9 @@ public Class entityClass() { public Class metaEntityClass() { return MetadataAttributeSharedStatesResponse.class; } + + @Override + public Class documentPositionClass() { + return SupplyDocumentPosition.class; + } } diff --git a/src/main/java/com/lognex/api/clients/endpoints/DocumentPositionsEndpoint.java b/src/main/java/com/lognex/api/clients/endpoints/DocumentPositionsEndpoint.java index b3901aa6..8b2d9e7d 100644 --- a/src/main/java/com/lognex/api/clients/endpoints/DocumentPositionsEndpoint.java +++ b/src/main/java/com/lognex/api/clients/endpoints/DocumentPositionsEndpoint.java @@ -16,16 +16,16 @@ import static com.lognex.api.utils.Constants.API_PATH; -public interface DocumentPositionsEndpoint extends Endpoint { +public interface DocumentPositionsEndpoint extends Endpoint { @ApiEndpoint - default List createPositions(String documentId, List updatedEntities) throws IOException, ApiClientException { + default List createPositions(String documentId, List updatedEntities) throws IOException, ApiClientException { updatedEntities = updatedEntities.stream() .map(e -> MetaHrefUtils.fillMeta(e, api().getHost() + API_PATH)) .collect(Collectors.toList()); - List responseEntity = HttpRequestExecutor. + List responseEntity = HttpRequestExecutor. path(api(), path() + documentId + "/positions/"). body(updatedEntities). - postList(DocumentPosition.class); + postList((Class) documentPositionClass()); for (int i = 0; i < responseEntity.size(); i++) { updatedEntities.set(i, responseEntity.get(i)); @@ -34,52 +34,52 @@ default List createPositions(String documentId, List createPositions(DocumentEntity document, List updatedEntities) throws IOException, ApiClientException { + default List createPositions(DocumentEntity document, List updatedEntities) throws IOException, ApiClientException { return createPositions(document.getId(), updatedEntities); } @ApiEndpoint - default DocumentPosition createPosition(String documentId, DocumentPosition updatedEntity) throws IOException, ApiClientException { - List positionList = new ArrayList<>(Collections.singletonList(updatedEntity)); - List newPosition = createPositions(documentId, positionList); + default T createPosition(String documentId, T updatedEntity) throws IOException, ApiClientException { + List positionList = new ArrayList<>(Collections.singletonList(updatedEntity)); + List newPosition = createPositions(documentId, positionList); updatedEntity.set(newPosition.get(0)); return updatedEntity; } @ApiEndpoint - default DocumentPosition createPosition(DocumentEntity document, DocumentPosition updatedEntity) throws IOException, ApiClientException { + default T createPosition(DocumentEntity document, T updatedEntity) throws IOException, ApiClientException { return createPosition(document.getId(), updatedEntity); } @ApiEndpoint - default ListEntity getPositions(String documentId, ApiParam... params) throws IOException, ApiClientException { + default ListEntity getPositions(String documentId, ApiParam... params) throws IOException, ApiClientException { return HttpRequestExecutor. path(api(), path() + documentId + "/positions"). apiParams(params). - list(DocumentPosition.class); + list((Class) documentPositionClass()); } @ApiEndpoint - default ListEntity getPositions(DocumentEntity document, ApiParam... params) throws IOException, ApiClientException { + default ListEntity getPositions(DocumentEntity document, ApiParam... params) throws IOException, ApiClientException { return getPositions(document.getId(), params); } @ApiEndpoint - default DocumentPosition getPosition(String documentId, String positionId, ApiParam... params) throws IOException, ApiClientException { + default T getPosition(String documentId, String positionId, ApiParam... params) throws IOException, ApiClientException { return HttpRequestExecutor. path(api(), path() + documentId + "/positions/" + positionId). apiParams(params). - get(DocumentPosition.class); + get((Class) documentPositionClass()); } @ApiEndpoint - default DocumentPosition getPosition(DocumentEntity document, String positionId, ApiParam... params) throws IOException, ApiClientException { + default T getPosition(DocumentEntity document, String positionId, ApiParam... params) throws IOException, ApiClientException { return getPosition(document.getId(), positionId, params); } @ApiEndpoint - default void updatePosition(String documentId, String positionId, DocumentPosition updatedEntity) throws IOException, ApiClientException { + default void updatePosition(String documentId, String positionId, T updatedEntity) throws IOException, ApiClientException { MetaHrefUtils.fillMeta(updatedEntity, api().getHost() + API_PATH); DocumentPosition responseEntity = HttpRequestExecutor. path(api(), path() + documentId + "/positions/" + positionId). @@ -90,17 +90,17 @@ default void updatePosition(String documentId, String positionId, DocumentPositi } @ApiEndpoint - default void updatePosition(DocumentEntity document, String positionId, DocumentPosition updatedEntity) throws IOException, ApiClientException { + default void updatePosition(DocumentEntity document, String positionId, T updatedEntity) throws IOException, ApiClientException { updatePosition(document.getId(), positionId, updatedEntity); } @ApiEndpoint - default void updatePosition(DocumentEntity document, DocumentPosition position, DocumentPosition updatedEntity) throws IOException, ApiClientException { + default void updatePosition(DocumentEntity document, T position, T updatedEntity) throws IOException, ApiClientException { updatePosition(document, position.getId(), updatedEntity); } @ApiEndpoint - default void updatePosition(DocumentEntity document, DocumentPosition position) throws IOException, ApiClientException { + default void updatePosition(DocumentEntity document, T position) throws IOException, ApiClientException { updatePosition(document, position, position); } @@ -117,7 +117,9 @@ default void deletePosition(DocumentEntity document, String positionId) throws I } @ApiEndpoint - default void deletePosition(DocumentEntity document, DocumentPosition position) throws IOException, ApiClientException { + default void deletePosition(DocumentEntity document, T position) throws IOException, ApiClientException { deletePosition(document, position.getId()); } + + Class documentPositionClass(); } diff --git a/src/main/java/com/lognex/api/entities/AgentAccount.java b/src/main/java/com/lognex/api/entities/AgentAccount.java index 99bcae4b..5247e2e6 100644 --- a/src/main/java/com/lognex/api/entities/AgentAccount.java +++ b/src/main/java/com/lognex/api/entities/AgentAccount.java @@ -1,6 +1,5 @@ package com.lognex.api.entities; -import com.lognex.api.entities.agents.Agent; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/lognex/api/entities/documents/DocumentEntity.java b/src/main/java/com/lognex/api/entities/documents/DocumentEntity.java index 7bbe909c..43c1ed9c 100644 --- a/src/main/java/com/lognex/api/entities/documents/DocumentEntity.java +++ b/src/main/java/com/lognex/api/entities/documents/DocumentEntity.java @@ -3,10 +3,7 @@ import com.lognex.api.entities.Group; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.agents.Employee; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import java.time.LocalDateTime; @@ -34,6 +31,7 @@ public DocumentEntity(String id) { @Getter @Setter @NoArgsConstructor + @AllArgsConstructor public static class Gtd { private String name; } diff --git a/src/main/java/com/lognex/api/entities/documents/DocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/DocumentPosition.java index e966a18c..7bd9c97b 100644 --- a/src/main/java/com/lognex/api/entities/documents/DocumentPosition.java +++ b/src/main/java/com/lognex/api/entities/documents/DocumentPosition.java @@ -1,6 +1,5 @@ package com.lognex.api.entities.documents; -import com.lognex.api.entities.Country; import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.products.Product; import com.lognex.api.entities.products.markers.ProductMarker; @@ -9,22 +8,13 @@ import lombok.NoArgsConstructor; import lombok.Setter; -import java.util.List; - @Getter @Setter @NoArgsConstructor @EqualsAndHashCode(callSuper = true) public class DocumentPosition extends MetaEntity { - private Country country; - private Double quantity; private ProductMarker assortment; - private Long price; - private DocumentEntity.Gtd gtd; - private Integer overhead; - private Integer vat; - private Double discount; private Product.ProductPack pack; - private List things; - private Double reserve; + private Long price; + private Double quantity; } diff --git a/src/main/java/com/lognex/api/entities/documents/Enter.java b/src/main/java/com/lognex/api/entities/documents/Enter.java index 96cde7de..be48fded 100644 --- a/src/main/java/com/lognex/api/entities/documents/Enter.java +++ b/src/main/java/com/lognex/api/entities/documents/Enter.java @@ -2,6 +2,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Organization; +import com.lognex.api.entities.documents.positions.EnterDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -26,7 +27,7 @@ public class Enter extends DocumentEntity implements IEntityWithAttributes { private String description; private String externalCode; private Organization organization; - private ListEntity positions; + private ListEntity positions; private Rate rate; private State state; private Store store; diff --git a/src/main/java/com/lognex/api/entities/documents/InternalOrder.java b/src/main/java/com/lognex/api/entities/documents/InternalOrder.java index df37004e..ab9f0bc0 100644 --- a/src/main/java/com/lognex/api/entities/documents/InternalOrder.java +++ b/src/main/java/com/lognex/api/entities/documents/InternalOrder.java @@ -2,6 +2,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Organization; +import com.lognex.api.entities.documents.positions.InternalOrderDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -19,7 +20,7 @@ public class InternalOrder extends DocumentEntity implements IEntityWithAttribut private LocalDateTime created; private String externalCode; private Organization organization; - private ListEntity positions; + private ListEntity positions; private Rate rate; private Store store; private Boolean vatEnabled; diff --git a/src/main/java/com/lognex/api/entities/documents/InvoiceIn.java b/src/main/java/com/lognex/api/entities/documents/InvoiceIn.java index a794fb72..0c9e37c3 100644 --- a/src/main/java/com/lognex/api/entities/documents/InvoiceIn.java +++ b/src/main/java/com/lognex/api/entities/documents/InvoiceIn.java @@ -3,6 +3,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; +import com.lognex.api.entities.documents.positions.InvoiceDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -29,7 +30,7 @@ public class InvoiceIn extends DocumentEntity { private AgentAccount organizationAccount; private Long payedSum; private LocalDateTime paymentPlannedMoment; - private ListEntity positions; + private ListEntity positions; private Rate rate; private Long shippedSum; private State state; diff --git a/src/main/java/com/lognex/api/entities/documents/InvoiceOut.java b/src/main/java/com/lognex/api/entities/documents/InvoiceOut.java index 27d00d7a..1c1019a0 100644 --- a/src/main/java/com/lognex/api/entities/documents/InvoiceOut.java +++ b/src/main/java/com/lognex/api/entities/documents/InvoiceOut.java @@ -3,6 +3,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; +import com.lognex.api.entities.documents.positions.InvoiceDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -29,7 +30,7 @@ public class InvoiceOut extends DocumentEntity { private AgentAccount organizationAccount; private Long payedSum; private LocalDateTime paymentPlannedMoment; - private ListEntity positions; + private ListEntity positions; private Project project; private Rate rate; private Long shippedSum; diff --git a/src/main/java/com/lognex/api/entities/documents/Move.java b/src/main/java/com/lognex/api/entities/documents/Move.java index fc1ff726..55cb8a79 100644 --- a/src/main/java/com/lognex/api/entities/documents/Move.java +++ b/src/main/java/com/lognex/api/entities/documents/Move.java @@ -2,6 +2,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; +import com.lognex.api.entities.documents.positions.MoveDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -23,7 +24,7 @@ public class Move extends DocumentEntity implements IEntityWithAttributes { private String externalCode; private Agent organization; private Overhead overhead; - private ListEntity positions; + private ListEntity positions; private Project project; private Rate rate; private Store sourceStore; diff --git a/src/main/java/com/lognex/api/entities/documents/PaymentIn.java b/src/main/java/com/lognex/api/entities/documents/PaymentIn.java index 65503007..3be4608c 100644 --- a/src/main/java/com/lognex/api/entities/documents/PaymentIn.java +++ b/src/main/java/com/lognex/api/entities/documents/PaymentIn.java @@ -4,7 +4,6 @@ import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceInDocumentMarker; -import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/lognex/api/entities/documents/PaymentOut.java b/src/main/java/com/lognex/api/entities/documents/PaymentOut.java index b4ff8a39..2e78b86c 100644 --- a/src/main/java/com/lognex/api/entities/documents/PaymentOut.java +++ b/src/main/java/com/lognex/api/entities/documents/PaymentOut.java @@ -4,7 +4,6 @@ import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceOutDocumentMarker; -import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/lognex/api/entities/documents/Prepayment.java b/src/main/java/com/lognex/api/entities/documents/Prepayment.java index cf04c196..2d49f894 100644 --- a/src/main/java/com/lognex/api/entities/documents/Prepayment.java +++ b/src/main/java/com/lognex/api/entities/documents/Prepayment.java @@ -3,6 +3,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; +import com.lognex.api.entities.documents.positions.PrepaymentDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -37,7 +38,7 @@ public class Prepayment extends DocumentEntity implements IEntityWithAttributes private Long cashSum; private Long noCashSum; private TaxSystem taxSystem; - private ListEntity positions; + private ListEntity positions; public Prepayment(String id) { super(id); diff --git a/src/main/java/com/lognex/api/entities/documents/PrepaymentReturn.java b/src/main/java/com/lognex/api/entities/documents/PrepaymentReturn.java index 054f4f03..e0716053 100644 --- a/src/main/java/com/lognex/api/entities/documents/PrepaymentReturn.java +++ b/src/main/java/com/lognex/api/entities/documents/PrepaymentReturn.java @@ -3,6 +3,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; +import com.lognex.api.entities.documents.positions.PrepaymentDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -36,7 +37,7 @@ public class PrepaymentReturn extends DocumentEntity implements IEntityWithAttri private Long cashSum; private Long noCashSum; private TaxSystem taxSystem; - private ListEntity positions; + private ListEntity positions; public PrepaymentReturn(String id) { super(id); diff --git a/src/main/java/com/lognex/api/entities/documents/ProcessingOrder.java b/src/main/java/com/lognex/api/entities/documents/ProcessingOrder.java index 9d6e77a0..91be9214 100644 --- a/src/main/java/com/lognex/api/entities/documents/ProcessingOrder.java +++ b/src/main/java/com/lognex/api/entities/documents/ProcessingOrder.java @@ -2,6 +2,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; +import com.lognex.api.entities.documents.positions.ProcessingOrderPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -20,7 +21,7 @@ public class ProcessingOrder extends DocumentEntity implements IEntityWithAttrib private String description; private String externalCode; private Agent organization; - private ListEntity positions; + private ListEntity positions; private ProcessingPlan processingPlan; private Double quantity; private State state; diff --git a/src/main/java/com/lognex/api/entities/documents/PurchaseReturn.java b/src/main/java/com/lognex/api/entities/documents/PurchaseReturn.java index b714399e..6a3ced19 100644 --- a/src/main/java/com/lognex/api/entities/documents/PurchaseReturn.java +++ b/src/main/java/com/lognex/api/entities/documents/PurchaseReturn.java @@ -3,6 +3,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.documents.markers.FinanceDocumentMarker; +import com.lognex.api.entities.documents.positions.PurchaseReturnDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -22,7 +23,7 @@ public class PurchaseReturn extends DocumentEntity implements IEntityWithAttribu private String externalCode; private Agent organization; private Long payedSum; - private ListEntity positions; + private ListEntity positions; private Rate rate; private Store store; private Supply supply; diff --git a/src/main/java/com/lognex/api/entities/documents/RetailDemand.java b/src/main/java/com/lognex/api/entities/documents/RetailDemand.java index 57954f01..a0ab379d 100644 --- a/src/main/java/com/lognex/api/entities/documents/RetailDemand.java +++ b/src/main/java/com/lognex/api/entities/documents/RetailDemand.java @@ -3,7 +3,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; -import com.lognex.api.entities.documents.positions.DocumentPositionWithCost; +import com.lognex.api.entities.documents.positions.RetailSalesDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -26,7 +26,7 @@ public class RetailDemand extends DocumentEntity implements IEntityWithAttribute private Long noCashSum; private Organization organization; private Long payedSum; - private ListEntity positions; + private ListEntity positions; private Rate rate; private RetailShift retailShift; private RetailStore retailStore; diff --git a/src/main/java/com/lognex/api/entities/documents/RetailSalesReturn.java b/src/main/java/com/lognex/api/entities/documents/RetailSalesReturn.java index ffcc9595..8eb61059 100644 --- a/src/main/java/com/lognex/api/entities/documents/RetailSalesReturn.java +++ b/src/main/java/com/lognex/api/entities/documents/RetailSalesReturn.java @@ -2,7 +2,7 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; -import com.lognex.api.entities.documents.positions.DocumentPositionWithCost; +import com.lognex.api.entities.documents.positions.RetailSalesDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -24,7 +24,7 @@ public class RetailSalesReturn extends DocumentEntity implements IEntityWithAttr private String externalCode; private Long noCashSum; private Agent organization; - private ListEntity positions; + private ListEntity positions; private Rate rate; private RetailShift retailShift; private RetailStore retailStore; diff --git a/src/main/java/com/lognex/api/entities/documents/RetailShift.java b/src/main/java/com/lognex/api/entities/documents/RetailShift.java index c76af111..7cebb537 100644 --- a/src/main/java/com/lognex/api/entities/documents/RetailShift.java +++ b/src/main/java/com/lognex/api/entities/documents/RetailShift.java @@ -3,7 +3,6 @@ import com.lognex.api.entities.RetailStore; import com.lognex.api.entities.Store; import com.lognex.api.entities.agents.Organization; -import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/lognex/api/entities/documents/SalesReturn.java b/src/main/java/com/lognex/api/entities/documents/SalesReturn.java index 5fc9fb3b..f901a160 100644 --- a/src/main/java/com/lognex/api/entities/documents/SalesReturn.java +++ b/src/main/java/com/lognex/api/entities/documents/SalesReturn.java @@ -4,6 +4,7 @@ import com.lognex.api.entities.agents.Agent; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.markers.FinanceDocumentMarker; +import com.lognex.api.entities.documents.positions.SalesReturnDocumentPosition; import com.lognex.api.responses.ListEntity; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -25,7 +26,7 @@ public class SalesReturn extends DocumentEntity implements IEntityWithAttributes private String externalCode; private Organization organization; private Long payedSum; - private ListEntity positions; + private ListEntity positions; private Rate rate; private State state; private Store store; diff --git a/src/main/java/com/lognex/api/entities/documents/positions/CommissionReportDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/CommissionReportDocumentPosition.java index 3600adfd..fae1dfc7 100644 --- a/src/main/java/com/lognex/api/entities/documents/positions/CommissionReportDocumentPosition.java +++ b/src/main/java/com/lognex/api/entities/documents/positions/CommissionReportDocumentPosition.java @@ -11,5 +11,6 @@ @NoArgsConstructor @EqualsAndHashCode(callSuper = true) public class CommissionReportDocumentPosition extends DocumentPosition { - Double reward; + private Double reward; + private Integer vat; } diff --git a/src/main/java/com/lognex/api/entities/documents/positions/CustomerOrderDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/CustomerOrderDocumentPosition.java index e81536d0..888e367d 100644 --- a/src/main/java/com/lognex/api/entities/documents/positions/CustomerOrderDocumentPosition.java +++ b/src/main/java/com/lognex/api/entities/documents/positions/CustomerOrderDocumentPosition.java @@ -12,6 +12,9 @@ @NoArgsConstructor @EqualsAndHashCode(callSuper = true) public class CustomerOrderDocumentPosition extends DocumentPosition { + private Double discount; + private Double reserve; private Long shipped; private GoodTaxSystem taxSystem; + private Integer vat; } diff --git a/src/main/java/com/lognex/api/entities/documents/positions/DemandDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/DemandDocumentPosition.java index 3f9b0533..9f649449 100644 --- a/src/main/java/com/lognex/api/entities/documents/positions/DemandDocumentPosition.java +++ b/src/main/java/com/lognex/api/entities/documents/positions/DemandDocumentPosition.java @@ -13,6 +13,9 @@ @NoArgsConstructor @EqualsAndHashCode(callSuper = true) public class DemandDocumentPosition extends DocumentPosition { - List trackingCodes; private Long cost; + private Double discount; + private Integer overhead; + private List trackingCodes; + private Integer vat; } diff --git a/src/main/java/com/lognex/api/entities/documents/positions/EnterDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/EnterDocumentPosition.java new file mode 100644 index 00000000..3f6b7a83 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/EnterDocumentPosition.java @@ -0,0 +1,23 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.Country; +import com.lognex.api.entities.documents.DocumentEntity; +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class EnterDocumentPosition extends DocumentPosition { + private Country country; + private DocumentEntity.Gtd gtd; + private Integer overhead; + private String reason; + private List things; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/DocumentPositionWithCost.java b/src/main/java/com/lognex/api/entities/documents/positions/InternalOrderDocumentPosition.java similarity index 75% rename from src/main/java/com/lognex/api/entities/documents/positions/DocumentPositionWithCost.java rename to src/main/java/com/lognex/api/entities/documents/positions/InternalOrderDocumentPosition.java index fb232ada..f534f630 100644 --- a/src/main/java/com/lognex/api/entities/documents/positions/DocumentPositionWithCost.java +++ b/src/main/java/com/lognex/api/entities/documents/positions/InternalOrderDocumentPosition.java @@ -10,6 +10,6 @@ @Setter @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public class DocumentPositionWithCost extends DocumentPosition { - Long cost; +public class InternalOrderDocumentPosition extends DocumentPosition { + private Integer vat; } diff --git a/src/main/java/com/lognex/api/entities/documents/positions/InventoryDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/InventoryDocumentPosition.java index 84b30294..c4a9fa93 100644 --- a/src/main/java/com/lognex/api/entities/documents/positions/InventoryDocumentPosition.java +++ b/src/main/java/com/lognex/api/entities/documents/positions/InventoryDocumentPosition.java @@ -11,7 +11,7 @@ @NoArgsConstructor @EqualsAndHashCode(callSuper = true) public class InventoryDocumentPosition extends DocumentPosition { - private Long calculatedQuantity; - private Long correctionAmount; - private Long correctionSum; + private Double calculatedQuantity; + private Double correctionAmount; + private Double correctionSum; } diff --git a/src/main/java/com/lognex/api/entities/documents/positions/InvoiceDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/InvoiceDocumentPosition.java new file mode 100644 index 00000000..1310bbc7 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/InvoiceDocumentPosition.java @@ -0,0 +1,16 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class InvoiceDocumentPosition extends DocumentPosition { + private Double discount; + private Integer vat; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/LossDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/LossDocumentPosition.java index f7004111..0ac3c6e8 100644 --- a/src/main/java/com/lognex/api/entities/documents/positions/LossDocumentPosition.java +++ b/src/main/java/com/lognex/api/entities/documents/positions/LossDocumentPosition.java @@ -6,10 +6,13 @@ import lombok.NoArgsConstructor; import lombok.Setter; +import java.util.List; + @Getter @Setter @NoArgsConstructor @EqualsAndHashCode(callSuper = true) public class LossDocumentPosition extends DocumentPosition { - String reason; + private String reason; + private List things; } diff --git a/src/main/java/com/lognex/api/entities/documents/positions/MoveDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/MoveDocumentPosition.java new file mode 100644 index 00000000..69acdc6c --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/MoveDocumentPosition.java @@ -0,0 +1,18 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class MoveDocumentPosition extends DocumentPosition { + private Integer overhead; + private List things; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/PrepaymentDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/PrepaymentDocumentPosition.java new file mode 100644 index 00000000..100e29d8 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/PrepaymentDocumentPosition.java @@ -0,0 +1,16 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class PrepaymentDocumentPosition extends DocumentPosition { + private Double discount; + private Integer vat; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/ProcessingOrderPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/ProcessingOrderPosition.java new file mode 100644 index 00000000..732d58c0 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/ProcessingOrderPosition.java @@ -0,0 +1,20 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.MetaEntity; +import com.lognex.api.entities.products.Product; +import com.lognex.api.entities.products.markers.ProductMarker; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class ProcessingOrderPosition extends MetaEntity { + private ProductMarker assortment; + private Product.ProductPack pack; + private Double quantity; + private Double reserve; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/PurchaseOrderDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/PurchaseOrderDocumentPosition.java index 330c4bc6..b22df399 100644 --- a/src/main/java/com/lognex/api/entities/documents/positions/PurchaseOrderDocumentPosition.java +++ b/src/main/java/com/lognex/api/entities/documents/positions/PurchaseOrderDocumentPosition.java @@ -11,6 +11,8 @@ @NoArgsConstructor @EqualsAndHashCode(callSuper = true) public class PurchaseOrderDocumentPosition extends DocumentPosition { + private Double discount; private Long shipped; + private Integer vat; private Long wait; } diff --git a/src/main/java/com/lognex/api/entities/documents/positions/PurchaseReturnDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/PurchaseReturnDocumentPosition.java new file mode 100644 index 00000000..caabd61d --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/PurchaseReturnDocumentPosition.java @@ -0,0 +1,19 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class PurchaseReturnDocumentPosition extends DocumentPosition { + private Double discount; + private List things; + private Integer vat; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/RetailSalesDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/RetailSalesDocumentPosition.java new file mode 100644 index 00000000..f7290e43 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/RetailSalesDocumentPosition.java @@ -0,0 +1,20 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class RetailSalesDocumentPosition extends DocumentPosition { + private Long cost; + private Double discount; + private List things; + private Integer vat; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/SalesReturnDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/SalesReturnDocumentPosition.java new file mode 100644 index 00000000..0405c659 --- /dev/null +++ b/src/main/java/com/lognex/api/entities/documents/positions/SalesReturnDocumentPosition.java @@ -0,0 +1,24 @@ +package com.lognex.api.entities.documents.positions; + +import com.lognex.api.entities.Country; +import com.lognex.api.entities.documents.DocumentEntity; +import com.lognex.api.entities.documents.DocumentPosition; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SalesReturnDocumentPosition extends DocumentPosition { + private Long cost; + private Country country; + private Double discount; + private DocumentEntity.Gtd gtd; + private List things; + private Integer vat; +} diff --git a/src/main/java/com/lognex/api/entities/documents/positions/SupplyDocumentPosition.java b/src/main/java/com/lognex/api/entities/documents/positions/SupplyDocumentPosition.java index 58cc8991..358e23e7 100644 --- a/src/main/java/com/lognex/api/entities/documents/positions/SupplyDocumentPosition.java +++ b/src/main/java/com/lognex/api/entities/documents/positions/SupplyDocumentPosition.java @@ -1,5 +1,7 @@ package com.lognex.api.entities.documents.positions; +import com.lognex.api.entities.Country; +import com.lognex.api.entities.documents.DocumentEntity; import com.lognex.api.entities.documents.DocumentPosition; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -13,5 +15,11 @@ @NoArgsConstructor @EqualsAndHashCode(callSuper = true) public class SupplyDocumentPosition extends DocumentPosition { - List trackingCodes; + private Country country; + private Double discount; + private DocumentEntity.Gtd gtd; + private Integer overhead; + private List things; + private List trackingCodes; + private Integer vat; } diff --git a/src/main/java/com/lognex/api/entities/notifications/NotificationExchange.java b/src/main/java/com/lognex/api/entities/notifications/NotificationExchange.java index df86cacb..74a9a755 100644 --- a/src/main/java/com/lognex/api/entities/notifications/NotificationExchange.java +++ b/src/main/java/com/lognex/api/entities/notifications/NotificationExchange.java @@ -1,6 +1,5 @@ package com.lognex.api.entities.notifications; -import com.google.gson.*; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/lognex/api/entities/products/Product.java b/src/main/java/com/lognex/api/entities/products/Product.java index 10106a86..222f4439 100644 --- a/src/main/java/com/lognex/api/entities/products/Product.java +++ b/src/main/java/com/lognex/api/entities/products/Product.java @@ -2,7 +2,6 @@ import com.lognex.api.entities.*; import com.lognex.api.entities.agents.Agent; -import com.lognex.api.entities.agents.Counterparty; import com.lognex.api.entities.agents.Employee; import com.lognex.api.entities.products.markers.ConsignmentParentMarker; import com.lognex.api.entities.products.markers.HasImages; diff --git a/src/main/java/com/lognex/api/entities/products/Service.java b/src/main/java/com/lognex/api/entities/products/Service.java index c0e15876..f0e1b81c 100644 --- a/src/main/java/com/lognex/api/entities/products/Service.java +++ b/src/main/java/com/lognex/api/entities/products/Service.java @@ -3,7 +3,6 @@ import com.lognex.api.entities.Attribute; import com.lognex.api.entities.Group; import com.lognex.api.entities.IEntityWithAttributes; -import com.lognex.api.entities.TaxSystem; import com.lognex.api.entities.agents.Employee; import com.lognex.api.entities.products.markers.SingleProductMarker; import lombok.EqualsAndHashCode; diff --git a/src/main/java/com/lognex/api/responses/ListEntity.java b/src/main/java/com/lognex/api/responses/ListEntity.java index b712981c..bf5325d9 100644 --- a/src/main/java/com/lognex/api/responses/ListEntity.java +++ b/src/main/java/com/lognex/api/responses/ListEntity.java @@ -8,6 +8,7 @@ import lombok.NoArgsConstructor; import lombok.Setter; +import java.util.Arrays; import java.util.List; /** @@ -21,4 +22,8 @@ public final class ListEntity extends MetaEntity implements Fetchable { private Context context; private List rows; + + public ListEntity(T... rows) { + this.rows = Arrays.asList(rows); + } } diff --git a/src/test/java/com/lognex/api/EndpointsTest.java b/src/test/java/com/lognex/api/EndpointsTest.java index 0d9d9a87..5a097087 100644 --- a/src/test/java/com/lognex/api/EndpointsTest.java +++ b/src/test/java/com/lognex/api/EndpointsTest.java @@ -60,8 +60,8 @@ public void endpointsTest() throws InvocationTargetException, IllegalAccessExcep if (!expected.isEmpty() && !newMethods.isEmpty()) fail( "Не все методы из файла эталонов были найдены и некоторые текущие методы не были в него добавлены:" + - "\n" + expected.stream().map(s -> " - " + s).collect(Collectors.joining("\n")) + - "\n" + newMethods.stream().map(s -> " - " + s).collect(Collectors.joining("\n")) + "\n" + expected.stream().sorted().map(s -> " - " + s).collect(Collectors.joining("\n")) + + "\n" + newMethods.stream().sorted().map(s -> " + " + s).collect(Collectors.joining("\n")) ); if (!expected.isEmpty()) fail("Не все методы из файла эталонов были найдены:\n " + expected.stream().map(s -> " - " + s).collect(Collectors.joining("\n"))); diff --git a/src/test/java/com/lognex/api/entities/DiscountTest.java b/src/test/java/com/lognex/api/entities/DiscountTest.java index af4f7748..62af554e 100644 --- a/src/test/java/com/lognex/api/entities/DiscountTest.java +++ b/src/test/java/com/lognex/api/entities/DiscountTest.java @@ -3,8 +3,6 @@ import com.google.gson.Gson; import com.lognex.api.ApiClient; import com.lognex.api.entities.discounts.*; -import com.lognex.api.entities.discounts.AccumulationDiscount; -import com.lognex.api.entities.discounts.SpecialPriceDiscount; import com.lognex.api.entities.products.Variant; import com.lognex.api.responses.ListEntity; import com.lognex.api.utils.ApiClientException; diff --git a/src/test/java/com/lognex/api/entities/SimpleEntityManager.java b/src/test/java/com/lognex/api/entities/SimpleEntityManager.java index c7645ea9..93411398 100644 --- a/src/test/java/com/lognex/api/entities/SimpleEntityManager.java +++ b/src/test/java/com/lognex/api/entities/SimpleEntityManager.java @@ -5,6 +5,7 @@ import com.lognex.api.entities.agents.Employee; import com.lognex.api.entities.agents.Organization; import com.lognex.api.entities.documents.*; +import com.lognex.api.entities.documents.positions.ProcessingOrderPosition; import com.lognex.api.entities.products.Bundle; import com.lognex.api.entities.products.Product; import com.lognex.api.entities.products.Service; @@ -695,7 +696,7 @@ public ProcessingOrder createSimpleProcessingOrder() throws IOException, ApiClie processingOrder.setPositions(new ListEntity<>()); processingOrder.getPositions().setRows(new ArrayList<>()); - DocumentPosition position = new DocumentPosition(); + ProcessingOrderPosition position = new ProcessingOrderPosition(); position.setQuantity(3.1234); position.setAssortment(material); processingOrder.getPositions().getRows().add(position); diff --git a/src/test/java/com/lognex/api/entities/documents/CommissionReportInTest.java b/src/test/java/com/lognex/api/entities/documents/CommissionReportInTest.java index 53737911..9d66a4a9 100644 --- a/src/test/java/com/lognex/api/entities/documents/CommissionReportInTest.java +++ b/src/test/java/com/lognex/api/entities/documents/CommissionReportInTest.java @@ -5,6 +5,7 @@ import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.agents.Counterparty; import com.lognex.api.entities.agents.Organization; +import com.lognex.api.entities.documents.positions.CommissionReportDocumentPosition; import com.lognex.api.responses.ListEntity; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; import com.lognex.api.utils.ApiClientException; @@ -14,7 +15,9 @@ import java.time.LocalDateTime; import java.util.Date; +import static com.lognex.api.utils.params.ExpandParam.expand; import static com.lognex.api.utils.params.FilterParam.filterEq; +import static com.lognex.api.utils.params.LimitParam.limit; import static org.junit.Assert.*; public class CommissionReportInTest extends DocumentWithPositionsTestBase { @@ -31,6 +34,12 @@ public void createTest() throws IOException, ApiClientException { Organization organization = simpleEntityManager.getOwnOrganization(); commissionReportIn.setOrganization(organization); + CommissionReportDocumentPosition position = new CommissionReportDocumentPosition(); + position.setAssortment(simpleEntityManager.createSimpleProduct()); + position.setQuantity(1.); + position.setReward(17.); + commissionReportIn.setPositions(new ListEntity<>(position)); + Contract contract = new Contract(); contract.setName(randomString()); contract.setOwnAgent(organization); @@ -44,7 +53,11 @@ public void createTest() throws IOException, ApiClientException { api.entity().commissionreportin().create(commissionReportIn); - ListEntity updatedEntitiesList = api.entity().commissionreportin().get(filterEq("name", commissionReportIn.getName())); + ListEntity updatedEntitiesList = api.entity().commissionreportin().get( + filterEq("name", commissionReportIn.getName()), + expand("positions"), + limit(5) + ); assertEquals(1, updatedEntitiesList.getRows().size()); CommissionReportIn retrievedEntity = updatedEntitiesList.getRows().get(0); @@ -56,6 +69,8 @@ public void createTest() throws IOException, ApiClientException { assertEquals(commissionReportIn.getOrganization().getMeta().getHref(), retrievedEntity.getOrganization().getMeta().getHref()); assertEquals(commissionReportIn.getAgent().getMeta().getHref(), retrievedEntity.getAgent().getMeta().getHref()); assertEquals(commissionReportIn.getContract().getMeta().getHref(), retrievedEntity.getContract().getMeta().getHref()); + assertEquals(1, retrievedEntity.getPositions().getRows().size()); + assertEquals(position.getReward(), retrievedEntity.getPositions().getRows().get(0).getReward()); } @Test diff --git a/src/test/java/com/lognex/api/entities/documents/DocumentWithPositionsTestBase.java b/src/test/java/com/lognex/api/entities/documents/DocumentWithPositionsTestBase.java index 6a7a6b56..032026cb 100644 --- a/src/test/java/com/lognex/api/entities/documents/DocumentWithPositionsTestBase.java +++ b/src/test/java/com/lognex/api/entities/documents/DocumentWithPositionsTestBase.java @@ -23,7 +23,7 @@ public void createPositionByIdTest() throws IOException, ApiClientException { ListEntity originalPositions = ((DocumentPositionsEndpoint) entityClient()).getPositions(document.getId()); - DocumentPosition position = new DocumentPosition(); + DocumentPosition position = createDocumentPosition(); Product product = simpleEntityManager.createSimple(Product.class, true); @@ -49,7 +49,7 @@ public void createPositionByEntityTest() throws IOException, ApiClientException ListEntity originalPositions = ((DocumentPositionsEndpoint) entityClient()).getPositions(document.getId()); - DocumentPosition position = new DocumentPosition(); + DocumentPosition position = createDocumentPosition(); Product product = simpleEntityManager.createSimple(Product.class, true); @@ -69,6 +69,14 @@ public void createPositionByEntityTest() throws IOException, ApiClientException ); } + private DocumentPosition createDocumentPosition() { + try { + return (DocumentPosition) ((DocumentPositionsEndpoint) entityClient()).documentPositionClass().newInstance(); + } catch (Exception e) { + throw new AssertionError("Fail to create empty DocumentPosition", e); + } + } + @Test public void createPositionsByIdTest() throws IOException, ApiClientException { DocumentEntity document = (DocumentEntity) simpleEntityManager.createSimple(entityClass()); @@ -79,7 +87,7 @@ public void createPositionsByIdTest() throws IOException, ApiClientException { List products = new ArrayList<>(); for (int i = 0; i < 2; i++) { - DocumentPosition position = new DocumentPosition(); + DocumentPosition position = createDocumentPosition(); Product product = simpleEntityManager.createSimple(Product.class, true); products.add(product); @@ -119,7 +127,7 @@ public void createPositionsByEntityTest() throws IOException, ApiClientException List products = new ArrayList<>(); for (int i = 0; i < 2; i++) { - DocumentPosition position = new DocumentPosition(); + DocumentPosition position = createDocumentPosition(); Product product = simpleEntityManager.createSimple(Product.class, true); products.add(product); @@ -283,7 +291,7 @@ private List createSimplePositions(DocumentEntity document) th List positions = new ArrayList<>(); for (int i = 0; i < 2; i++) { - DocumentPosition position = new DocumentPosition(); + DocumentPosition position = createDocumentPosition(); Product product = simpleEntityManager.createSimple(Product.class, true); position.setAssortment(product); diff --git a/src/test/java/com/lognex/api/entities/documents/EnterTest.java b/src/test/java/com/lognex/api/entities/documents/EnterTest.java index 275c9f33..72cf5a0e 100644 --- a/src/test/java/com/lognex/api/entities/documents/EnterTest.java +++ b/src/test/java/com/lognex/api/entities/documents/EnterTest.java @@ -2,9 +2,11 @@ import com.lognex.api.clients.EntityClientBase; import com.lognex.api.entities.MetaEntity; +import com.lognex.api.entities.documents.positions.EnterDocumentPosition; import com.lognex.api.responses.ListEntity; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; import com.lognex.api.utils.ApiClientException; +import com.lognex.api.utils.params.ExpandParam; import org.junit.Test; import java.io.IOException; @@ -24,6 +26,14 @@ public void createTest() throws IOException, ApiClientException { enter.setOrganization(simpleEntityManager.getOwnOrganization()); enter.setStore(simpleEntityManager.getMainStore()); + EnterDocumentPosition position = new EnterDocumentPosition(); + position.setAssortment(simpleEntityManager.createSimpleProduct()); + position.setQuantity(1.); + position.setCountry(simpleEntityManager.createSimpleCountry()); + position.setGtd(new DocumentEntity.Gtd(randomString())); + position.setReason(randomString()); + enter.setPositions(new ListEntity<>(position)); + api.entity().enter().create(enter); ListEntity updatedEntitiesList = api.entity().enter().get(filterEq("name", enter.getName())); @@ -35,6 +45,13 @@ public void createTest() throws IOException, ApiClientException { assertEquals(enter.getMoment(), retrievedEntity.getMoment()); assertEquals(enter.getOrganization().getMeta().getHref(), retrievedEntity.getOrganization().getMeta().getHref()); assertEquals(enter.getStore().getMeta().getHref(), retrievedEntity.getStore().getMeta().getHref()); + + ListEntity retrievedPositions = api.entity().enter().getPositions(retrievedEntity.getId(), ExpandParam.expand("country")); + assertEquals(1, retrievedPositions.getRows().size()); + EnterDocumentPosition retrievedPosition = retrievedPositions.getRows().get(0); + assertEquals(position.getReason(), retrievedPosition.getReason()); + assertEquals(position.getGtd().getName(), retrievedPosition.getGtd().getName()); + assertEquals(position.getCountry().getId(), retrievedPosition.getCountry().getId()); } @Test diff --git a/src/test/java/com/lognex/api/entities/documents/InventoryTest.java b/src/test/java/com/lognex/api/entities/documents/InventoryTest.java index 5c8283f5..8371a4aa 100644 --- a/src/test/java/com/lognex/api/entities/documents/InventoryTest.java +++ b/src/test/java/com/lognex/api/entities/documents/InventoryTest.java @@ -2,6 +2,7 @@ import com.lognex.api.clients.EntityClientBase; import com.lognex.api.entities.MetaEntity; +import com.lognex.api.entities.documents.positions.InventoryDocumentPosition; import com.lognex.api.responses.ListEntity; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; import com.lognex.api.utils.ApiClientException; @@ -11,7 +12,9 @@ import java.time.LocalDateTime; import java.util.Date; +import static com.lognex.api.utils.params.ExpandParam.expand; import static com.lognex.api.utils.params.FilterParam.filterEq; +import static com.lognex.api.utils.params.LimitParam.limit; import static org.junit.Assert.*; public class InventoryTest extends DocumentWithPositionsTestBase { @@ -23,9 +26,20 @@ public void createTest() throws IOException, ApiClientException { inventory.setOrganization(simpleEntityManager.getOwnOrganization()); inventory.setStore(simpleEntityManager.getMainStore()); + InventoryDocumentPosition position = new InventoryDocumentPosition(); + position.setAssortment(simpleEntityManager.createSimpleProduct()); + position.setQuantity(1.); + position.setCalculatedQuantity(2.); + position.setCorrectionAmount(-1.); + inventory.setPositions(new ListEntity<>(position)); + api.entity().inventory().create(inventory); - ListEntity updatedEntitiesList = api.entity().inventory().get(filterEq("name", inventory.getName())); + ListEntity updatedEntitiesList = api.entity().inventory().get( + filterEq("name", inventory.getName()), + expand("positions"), + limit(5) + ); assertEquals(1, updatedEntitiesList.getRows().size()); Inventory retrievedEntity = updatedEntitiesList.getRows().get(0); @@ -33,6 +47,11 @@ public void createTest() throws IOException, ApiClientException { assertEquals(inventory.getMoment(), retrievedEntity.getMoment()); assertEquals(inventory.getOrganization().getMeta().getHref(), retrievedEntity.getOrganization().getMeta().getHref()); assertEquals(inventory.getStore().getMeta().getHref(), retrievedEntity.getStore().getMeta().getHref()); + + assertEquals(1, retrievedEntity.getPositions().getRows().size()); + InventoryDocumentPosition retrievedPosition = retrievedEntity.getPositions().getRows().get(0); + assertEquals(position.getCalculatedQuantity(), retrievedPosition.getCalculatedQuantity()); + assertEquals(position.getCorrectionAmount(), retrievedPosition.getCorrectionAmount()); } @Test diff --git a/src/test/java/com/lognex/api/entities/documents/LossTest.java b/src/test/java/com/lognex/api/entities/documents/LossTest.java index 26774e13..ea6d369e 100644 --- a/src/test/java/com/lognex/api/entities/documents/LossTest.java +++ b/src/test/java/com/lognex/api/entities/documents/LossTest.java @@ -2,6 +2,7 @@ import com.lognex.api.clients.EntityClientBase; import com.lognex.api.entities.MetaEntity; +import com.lognex.api.entities.documents.positions.LossDocumentPosition; import com.lognex.api.responses.ListEntity; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; import com.lognex.api.utils.ApiClientException; @@ -25,6 +26,12 @@ public void createTest() throws IOException, ApiClientException { loss.setOrganization(simpleEntityManager.getOwnOrganization()); loss.setStore(simpleEntityManager.getMainStore()); + LossDocumentPosition position = new LossDocumentPosition(); + position.setAssortment(simpleEntityManager.createSimpleProduct()); + position.setReason(randomString()); + position.setQuantity(1.); + loss.setPositions(new ListEntity<>(position)); + api.entity().loss().create(loss); ListEntity updatedEntitiesList = api.entity().loss().get(filterEq("name", loss.getName())); @@ -36,6 +43,10 @@ public void createTest() throws IOException, ApiClientException { assertEquals(loss.getMoment(), retrievedEntity.getMoment()); assertEquals(loss.getOrganization().getMeta().getHref(), retrievedEntity.getOrganization().getMeta().getHref()); assertEquals(loss.getStore().getMeta().getHref(), retrievedEntity.getStore().getMeta().getHref()); + + ListEntity retrievedPositions = api.entity().loss().getPositions(retrievedEntity.getId()); + assertEquals(1, retrievedPositions.getRows().size()); + assertEquals(position.getReason(), retrievedPositions.getRows().get(0).getReason()); } @Test diff --git a/src/test/java/com/lognex/api/entities/documents/ProcessingOrderTest.java b/src/test/java/com/lognex/api/entities/documents/ProcessingOrderTest.java index 7becca37..2aa0e7f5 100644 --- a/src/test/java/com/lognex/api/entities/documents/ProcessingOrderTest.java +++ b/src/test/java/com/lognex/api/entities/documents/ProcessingOrderTest.java @@ -5,6 +5,7 @@ import com.lognex.api.entities.MetaEntity; import com.lognex.api.entities.Store; import com.lognex.api.entities.agents.Organization; +import com.lognex.api.entities.documents.positions.ProcessingOrderPosition; import com.lognex.api.entities.products.Product; import com.lognex.api.responses.ListEntity; import com.lognex.api.responses.metadata.MetadataAttributeSharedStatesResponse; @@ -59,7 +60,7 @@ public void createTest() throws IOException, ApiClientException { processingOrder.setPositions(new ListEntity<>()); processingOrder.getPositions().setRows(new ArrayList<>()); - DocumentPosition position = new DocumentPosition(); + ProcessingOrderPosition position = new ProcessingOrderPosition(); position.setQuantity(3.1234); position.setAssortment(material); processingOrder.getPositions().getRows().add(position); diff --git a/src/test/java/com/lognex/api/schema/SchemaMapper.java b/src/test/java/com/lognex/api/schema/SchemaMapper.java index 9dcfbad3..d1f9d425 100644 --- a/src/test/java/com/lognex/api/schema/SchemaMapper.java +++ b/src/test/java/com/lognex/api/schema/SchemaMapper.java @@ -4,10 +4,8 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.lognex.api.utils.TestUtils; -import org.apache.commons.io.IOUtils; import java.io.IOException; -import java.nio.charset.Charset; import java.util.*; import static com.lognex.api.schema.SchemaMapper.Constants.*; diff --git a/src/test/java/com/lognex/api/serializers/EnumSwitchCaseSerializerTest.java b/src/test/java/com/lognex/api/serializers/EnumSwitchCaseSerializerTest.java index 6da5b0a9..3fbb5971 100644 --- a/src/test/java/com/lognex/api/serializers/EnumSwitchCaseSerializerTest.java +++ b/src/test/java/com/lognex/api/serializers/EnumSwitchCaseSerializerTest.java @@ -1,19 +1,14 @@ package com.lognex.api.serializers; import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonParseException; import com.lognex.api.ApiClient; import com.lognex.api.entities.Meta; -import com.lognex.api.entities.discounts.*; -import com.lognex.api.entities.notifications.Notification; import com.lognex.api.entities.notifications.NotificationExchange; import com.lognex.api.utils.TestAsserts; import com.lognex.api.utils.TestRandomizers; import org.junit.Test; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; public class EnumSwitchCaseSerializerTest implements TestAsserts, TestRandomizers { @Test diff --git a/src/test/resources/methods.csv b/src/test/resources/methods.csv index d40ff788..c3c10c0b 100644 --- a/src/test/resources/methods.csv +++ b/src/test/resources/methods.csv @@ -60,7 +60,7 @@ POST;https://test.moysklad/api/remap/1.2/entity/project/;MetaEntity;MetaEntity DELETE;https://test.moysklad/api/remap/1.2/entity/invoiceout/ID;String;void DELETE;https://test.moysklad/api/remap/1.2/entity/task/ID;String;void POST;https://test.moysklad/api/remap/1.2/entity/counterparty/ID/notes;String,Note;Note -GET;https://test.moysklad/api/remap/1.2/entity/purchasereturn/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/purchasereturn/ID/positions/ID;String,String,ApiParam[];PurchaseReturnDocumentPosition GET;https://test.moysklad/api/remap/1.2/entity/productfolder/ID;String,ApiParam[];ProductFolder POST;https://test.moysklad/api/remap/1.2/entity/processingplan/ID/export/;String,Template,File;void GET;https://test.moysklad/api/remap/1.2/entity/retailsalesreturn/metadata/;;MetadataAttributeSharedStatesResponse @@ -68,7 +68,7 @@ POST;https://test.moysklad/api/remap/1.2/entity/factureout/ID/export/;String,Tem PUT;https://test.moysklad/api/remap/1.2/entity/processingorder/new;;ProcessingOrder PUT;https://test.moysklad/api/remap/1.2/entity/expenseitem/ENTITY_ID;MetaEntity;void POST;https://test.moysklad/api/remap/1.2/entity/expenseitem/;MetaEntity;MetaEntity -GET;https://test.moysklad/api/remap/1.2/entity/invoicein/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/invoicein/ID/positions/ID;String,String,ApiParam[];InvoiceDocumentPosition GET;https://test.moysklad/api/remap/1.2/entity/commissionreportin/metadata/;;MetadataAttributeSharedStatesResponse DELETE;https://test.moysklad/api/remap/1.2/entity/cashin/ID;String;void POST;https://test.moysklad/api/remap/1.2/entity/processingplan/ID/export/;String,ExportRequest,File,boolean;void @@ -145,7 +145,7 @@ POST;https://test.moysklad/api/remap/1.2/entity/loss/ID/export/;String,ExportReq POST;https://test.moysklad/api/remap/1.2/entity/processing/ID/export/;String,ExportRequest,File,boolean;void GET;https://test.moysklad/api/remap/1.2/entity/store/ID;String,ApiParam[];Store GET;https://test.moysklad/api/remap/1.2/entity/bundle/ID/components/ID;String,String,ApiParam[];ComponentEntity -GET;https://test.moysklad/api/remap/1.2/entity/commissionreportin/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/commissionreportin/ID/positions/ID;String,String,ApiParam[];CommissionReportDocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/inventory/ID/export/;String,File,boolean,PrintRequest[];void PUT;https://test.moysklad/api/remap/1.2/entity/counterparty/ENTITY_ID/contactpersons/ID;Counterparty,String,ContactPerson;void GET;https://test.moysklad/api/remap/1.2/entity/inventory/ID/positions;String,ApiParam[];ListEntity @@ -207,7 +207,7 @@ POST;https://test.moysklad/api/remap/1.2/entity/retailsalesreturn/ID/export/;Str POST;https://test.moysklad/api/remap/1.2/entity/customerorder/ID/export/;String,ExportRequest,File;void POST;https://test.moysklad/api/remap/1.2/entity/demand/ID/positions/;String,List;ArrayList GET;https://test.moysklad/api/remap/1.2/entity/processingorder/ID;String,ApiParam[];ProcessingOrder -GET;https://test.moysklad/api/remap/1.2/entity/purchasereturn/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/purchasereturn/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];PurchaseReturnDocumentPosition GET;https://test.moysklad/api/remap/1.2/entity/retaildrawercashin/;ApiParam[];ListEntity POST;https://test.moysklad/api/remap/1.2/entity/supply/ID/export/;String,Template,ExportExtension,File;void DELETE;https://test.moysklad/api/remap/1.2/entity/bundle/ENTITY_ID;MetaEntity;void @@ -235,7 +235,7 @@ GET;https://test.moysklad/api/remap/1.2/entity/salesreturn/metadata/customtempla GET;https://test.moysklad/api/remap/1.2/entity/currency/ENTITY_ID;MetaEntity,ApiParam[];Currency PUT;https://test.moysklad/api/remap/1.2/entity/purchaseorder/ID/positions/ID;String,String,DocumentPosition;void PUT;https://test.moysklad/api/remap/1.2/entity/product/ID;String,MetaEntity;void -GET;https://test.moysklad/api/remap/1.2/entity/demand/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/demand/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DemandDocumentPosition GET;https://test.moysklad/api/remap/1.2/entity/processing/metadata/customtemplate/;;ListEntity PUT;https://test.moysklad/api/remap/1.2/entity/cashin/new;String,DocumentEntity;CashIn GET;https://test.moysklad/api/remap/1.2/entity/commissionreportout/metadata/embeddedtemplate/;;ListEntity @@ -256,7 +256,7 @@ GET;https://test.moysklad/api/remap/1.2/entity/enter/metadata/embeddedtemplate/; GET;https://test.moysklad/api/remap/1.2/entity/cashin/metadata/embeddedtemplate/ID;String;Template PUT;https://test.moysklad/api/remap/1.2/entity/internalorder/DOCUMENT_ID/positions/ENTITY_ID;DocumentEntity,DocumentPosition,DocumentPosition;void PUT;https://test.moysklad/api/remap/1.2/entity/commissionreportin/DOCUMENT_ID/positions/ID;DocumentEntity,String,DocumentPosition;void -GET;https://test.moysklad/api/remap/1.2/entity/move/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/move/ID/positions/ID;String,String,ApiParam[];MoveDocumentPosition PUT;https://test.moysklad/api/remap/1.2/entity/pricelist/DOCUMENT_ID/positions/ENTITY_ID;Pricelist,PricelistRow;void POST;https://test.moysklad/api/remap/1.2/entity/commissionreportin/ID/export/;String,File,boolean,PrintRequest[];void POST;https://test.moysklad/api/remap/1.2/entity/customentity/;MetaEntity;MetaEntity @@ -289,7 +289,7 @@ GET;https://test.moysklad/api/remap/1.2/entity/demand/metadata/embeddedtemplate/ POST;https://test.moysklad/api/remap/1.2/entity/pricelist/ID/export/;String,Template,File,boolean;void POST;https://test.moysklad/api/remap/1.2/entity/cashin/;MetaEntity;MetaEntity GET;https://test.moysklad/api/remap/1.2/entity/invoiceout/ID/positions;String,ApiParam[];ListEntity -GET;https://test.moysklad/api/remap/1.2/entity/inventory/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/inventory/ID/positions/ID;String,String,ApiParam[];InventoryDocumentPosition GET;https://test.moysklad/api/remap/1.2/entity/variant/metadata;;VariantMetadataResponse DELETE;https://test.moysklad/api/remap/1.2/entity/consignment/ENTITY_ID;MetaEntity;void GET;https://test.moysklad/api/remap/1.2/entity/purchasereturn/;ApiParam[];ListEntity @@ -298,13 +298,13 @@ PUT;https://test.moysklad/api/remap/1.2/entity/commissionreportin/ID/positions/I POST;https://test.moysklad/api/remap/1.2/entity/internalorder/ID/export/;String,Template,File,boolean;void POST;https://test.moysklad/api/remap/1.2/entity/commissionreportin/ID/positions/;String,DocumentPosition;DocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/processingplan/ID/export/;String,File,PrintRequest[];void -GET;https://test.moysklad/api/remap/1.2/entity/loss/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/loss/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];LossDocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/inventory/DOCUMENT_ID/positions/;DocumentEntity,List;ArrayList GET;https://test.moysklad/api/remap/1.2/entity/loss/ID/positions;String,ApiParam[];ListEntity GET;https://test.moysklad/api/remap/1.2/entity/purchasereturn/metadata/embeddedtemplate/;;ListEntity POST;https://test.moysklad/api/remap/1.2/entity/salesreturn/;MetaEntity;MetaEntity PUT;https://test.moysklad/api/remap/1.2/entity/processingorder/new;String,List;ProcessingOrder -GET;https://test.moysklad/api/remap/1.2/entity/enter/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/enter/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];EnterDocumentPosition DELETE;https://test.moysklad/api/remap/1.2/entity/move/ENTITY_ID;MetaEntity;void PUT;https://test.moysklad/api/remap/1.2/entity/commissionreportin/ID;String,MetaEntity;void GET;https://test.moysklad/api/remap/1.2/entity/cashin/metadata/customtemplate/ID;String;Template @@ -316,7 +316,7 @@ POST;https://test.moysklad/api/remap/1.2/entity/retaildemand/ID/export/;String,T GET;https://test.moysklad/api/remap/1.2/entity/variant/metadata/attributes/ID;String;Attribute DELETE;https://test.moysklad/api/remap/1.2/entity/internalorder/ID;String;void POST;https://test.moysklad/api/remap/1.2/entity/supply/;MetaEntity;MetaEntity -GET;https://test.moysklad/api/remap/1.2/entity/loss/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/loss/ID/positions/ID;String,String,ApiParam[];LossDocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/cashin/ID/export/;String,File,PrintRequest[];void PUT;https://test.moysklad/api/remap/1.2/entity/pricelist/ID/positions/ID;String,String,PricelistRow;void POST;https://test.moysklad/api/remap/1.2/entity/enter/ID/export/;String,File,PrintRequest[];void @@ -424,7 +424,7 @@ PUT;https://test.moysklad/api/remap/1.2/entity/counterparty/ID/contactpersons/ID GET;https://test.moysklad/api/remap/1.2/entity/customerorder/DOCUMENT_ID/positions;DocumentEntity,ApiParam[];ListEntity GET;https://test.moysklad/api/remap/1.2/entity/processingorder/;ApiParam[];ListEntity GET;https://test.moysklad/api/remap/1.2/entity/paymentout/metadata/customtemplate/;;ListEntity -GET;https://test.moysklad/api/remap/1.2/entity/customerorder/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/customerorder/ID/positions/ID;String,String,ApiParam[];CustomerOrderDocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/internalorder/DOCUMENT_ID/positions/;DocumentEntity,DocumentPosition;DocumentPosition PUT;https://test.moysklad/api/remap/1.2/entity/purchasereturn/ID/positions/ID;String,String,DocumentPosition;void POST;https://test.moysklad/api/remap/1.2/entity/retailsalesreturn/ID/export/;String,ExportRequest,File;void @@ -438,7 +438,7 @@ POST;https://test.moysklad/api/remap/1.2/entity/paymentout/ID/export/;String,Fil DELETE;https://test.moysklad/api/remap/1.2/entity/retaildemand/ENTITY_ID;MetaEntity;void GET;https://test.moysklad/api/remap/1.2/entity/invoiceout/metadata/attributes/ID;String;Attribute PUT;https://test.moysklad/api/remap/1.2/entity/commissionreportout/DOCUMENT_ID/positions/ENTITY_ID;DocumentEntity,DocumentPosition,DocumentPosition;void -GET;https://test.moysklad/api/remap/1.2/entity/commissionreportin/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/commissionreportin/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];CommissionReportDocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/paymentin/ID/export/;String,ExportRequest,File,boolean;void PUT;https://test.moysklad/api/remap/1.2/entity/purchaseorder/DOCUMENT_ID/positions/ENTITY_ID;DocumentEntity,DocumentPosition;void GET;https://test.moysklad/api/remap/1.2/entity/paymentin/metadata/attributes/ID;String;Attribute @@ -449,7 +449,7 @@ DELETE;https://test.moysklad/api/remap/1.2/entity/productfolder/ID;String;void GET;https://test.moysklad/api/remap/1.2/entity/commissionreportout/metadata/;;MetadataAttributeSharedStatesResponse POST;https://test.moysklad/api/remap/1.2/entity/factureout/ID/export/;String,Template,ExportExtension,File,boolean;void PUT;https://test.moysklad/api/remap/1.2/entity/invoicein/ID;String,MetaEntity;void -GET;https://test.moysklad/api/remap/1.2/entity/invoicein/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/invoicein/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];InvoiceDocumentPosition PUT;https://test.moysklad/api/remap/1.2/entity/processingorder/new;DocumentTemplate;ProcessingOrder PUT;https://test.moysklad/api/remap/1.2/entity/purchasereturn/DOCUMENT_ID/positions/ID;DocumentEntity,String,DocumentPosition;void GET;https://test.moysklad/api/remap/1.2/entity/expenseitem/ID;String,ApiParam[];ExpenseItem @@ -462,7 +462,7 @@ PUT;https://test.moysklad/api/remap/1.2/entity/cashout/new;DocumentTemplate;Cash GET;https://test.moysklad/api/remap/1.2/entity/organization/ID;String,ApiParam[];Organization GET;https://test.moysklad/api/remap/1.2/entity/move/ENTITY_ID;MetaEntity,ApiParam[];Move GET;https://test.moysklad/api/remap/1.2/entity/inventory/DOCUMENT_ID/positions;DocumentEntity,ApiParam[];ListEntity -GET;https://test.moysklad/api/remap/1.2/entity/invoiceout/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/invoiceout/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];InvoiceDocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/customerorder/ID/export/;String,ExportRequest,File,boolean;void GET;https://test.moysklad/api/remap/1.2/entity/counterparty/metadata/attributes/ID;String;Attribute GET;https://test.moysklad/api/remap/1.2/entity/processingorder/metadata/embeddedtemplate/ID;String;Template @@ -512,7 +512,7 @@ GET;https://test.moysklad/api/remap/1.2/entity/retaildrawercashout/metadata/cust GET;https://test.moysklad/api/remap/1.2/entity/commissionreportin/metadata/customtemplate/ID;String;Template DELETE;https://test.moysklad/api/remap/1.2/entity/paymentin/ENTITY_ID;MetaEntity;void GET;https://test.moysklad/api/remap/1.2/entity/productfolder/metadata;;MetadataAttributeResponse -GET;https://test.moysklad/api/remap/1.2/entity/inventory/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/inventory/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];InventoryDocumentPosition DELETE;https://test.moysklad/api/remap/1.2/entity/internalorder/ENTITY_ID;MetaEntity;void GET;https://test.moysklad/api/remap/1.2/entity/contract/ENTITY_ID;MetaEntity,ApiParam[];Contract PUT;https://test.moysklad/api/remap/1.2/entity/product/ENTITY_ID;MetaEntity;void @@ -557,11 +557,11 @@ POST;https://test.moysklad/api/remap/1.2/entity/move/ID/export/;String,Template, POST;https://test.moysklad/api/remap/1.2/entity/invoicein/ID/export/;String,Template,File;void GET;https://test.moysklad/api/remap/1.2/entity/invoicein/metadata/customtemplate/;;ListEntity GET;https://test.moysklad/api/remap/1.2/entity/supply/ID;String,ApiParam[];Supply -GET;https://test.moysklad/api/remap/1.2/entity/demand/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/demand/ID/positions/ID;String,String,ApiParam[];DemandDocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/retailsalesreturn/ID/export/;String,Template,ExportExtension,File;void GET;https://test.moysklad/api/remap/1.2/entity/retaildrawercashout/metadata/embeddedtemplate/ID;String;Template POST;https://test.moysklad/api/remap/1.2/entity/retaildrawercashin/ID/export/;String,Template,ExportExtension,File,boolean;void -GET;https://test.moysklad/api/remap/1.2/entity/purchaseorder/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/purchaseorder/ID/positions/ID;String,String,ApiParam[];PurchaseOrderDocumentPosition GET;https://test.moysklad/api/remap/1.2/entity/bundle/ENTITY_ID/components;Bundle,ApiParam[];ListEntity PUT;https://test.moysklad/api/remap/1.2/entity/counterparty/ENTITY_ID/contactpersons/ENTITY_ID;Counterparty,ContactPerson,ContactPerson;void GET;https://test.moysklad/api/remap/1.2/entity/retaildemand/metadata/embeddedtemplate/ID;String;Template @@ -653,7 +653,7 @@ POST;https://test.moysklad/api/remap/1.2/entity/pricelist/ID/export/;String,Temp POST;https://test.moysklad/api/remap/1.2/entity/facturein/;MetaEntity;MetaEntity GET;https://test.moysklad/api/remap/1.2/entity/customerorder/ENTITY_ID;MetaEntity,ApiParam[];CustomerOrder POST;https://test.moysklad/api/remap/1.2/entity/enter/DOCUMENT_ID/positions/;DocumentEntity,List;ArrayList -GET;https://test.moysklad/api/remap/1.2/entity/move/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/move/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];MoveDocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/paymentout/ID/export/;String,Template,File,boolean;void GET;https://test.moysklad/api/remap/1.2/entity/supply/metadata/customtemplate/ID;String;Template POST;https://test.moysklad/api/remap/1.2/entity/facturein/ID/export/;String,File,boolean,PrintRequest[];void @@ -667,7 +667,7 @@ GET;https://test.moysklad/api/remap/1.2/entity/paymentin/metadata/embeddedtempla POST;https://test.moysklad/api/remap/1.2/entity/customerorder/DOCUMENT_ID/positions/;DocumentEntity,List;ArrayList GET;https://test.moysklad/api/remap/1.2/entity/pricelist/metadata/customtemplate/;;ListEntity DELETE;https://test.moysklad/api/remap/1.2/entity/invoicein/DOCUMENT_ID/positions/ID;DocumentEntity,String;void -GET;https://test.moysklad/api/remap/1.2/entity/supply/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/supply/ID/positions/ID;String,String,ApiParam[];SupplyDocumentPosition PUT;https://test.moysklad/api/remap/1.2/entity/supply/ID/positions/ID;String,String,DocumentPosition;void GET;https://test.moysklad/api/remap/1.2/entity/organization/ENTITY_ID;MetaEntity,ApiParam[];Organization GET;https://test.moysklad/api/remap/1.2/entity/discount/;ApiParam[];ListEntity @@ -735,7 +735,7 @@ GET;https://test.moysklad/api/remap/1.2/entity/facturein/metadata/embeddedtempla PUT;https://test.moysklad/api/remap/1.2/entity/supply/DOCUMENT_ID/positions/ENTITY_ID;DocumentEntity,DocumentPosition,DocumentPosition;void DELETE;https://test.moysklad/api/remap/1.2/entity/supply/ID;String;void GET;https://test.moysklad/api/remap/1.2/entity/enter/metadata/attributes/ID;String;Attribute -GET;https://test.moysklad/api/remap/1.2/entity/purchaseorder/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/purchaseorder/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];PurchaseOrderDocumentPosition GET;https://test.moysklad/api/remap/1.2/entity/cashout/ID;String,ApiParam[];CashOut GET;https://test.moysklad/api/remap/1.2/entity/internalorder/;ApiParam[];ListEntity DELETE;https://test.moysklad/api/remap/1.2/entity/service/ENTITY_ID;MetaEntity;void @@ -812,7 +812,7 @@ POST;https://test.moysklad/api/remap/1.2/entity/purchaseorder/ID/positions/;Stri POST;https://test.moysklad/api/remap/1.2/entity/processingorder/ID/export/;String,Template,File,boolean;void GET;https://test.moysklad/api/remap/1.2/entity/inventory/;ApiParam[];ListEntity GET;https://test.moysklad/api/remap/1.2/entity/commissionreportout/metadata/customtemplate/;;ListEntity -GET;https://test.moysklad/api/remap/1.2/entity/enter/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/enter/ID/positions/ID;String,String,ApiParam[];EnterDocumentPosition PUT;https://test.moysklad/api/remap/1.2/entity/processingorder/new;String,DocumentEntity;ProcessingOrder PUT;https://test.moysklad/api/remap/1.2/entity/move/DOCUMENT_ID/positions/ENTITY_ID;DocumentEntity,DocumentPosition,DocumentPosition;void PUT;https://test.moysklad/api/remap/1.2/entity/inventory/ENTITY_ID;MetaEntity;void @@ -820,7 +820,7 @@ DELETE;https://test.moysklad/api/remap/1.2/entity/commissionreportout/ID;String; POST;https://test.moysklad/api/remap/1.2/entity/move/ID/positions/;String,List;ArrayList PUT;https://test.moysklad/api/remap/1.2/entity/paymentout/new;String,List;PaymentOut GET;https://test.moysklad/api/remap/1.2/entity/purchasereturn/metadata/embeddedtemplate/ID;String;Template -GET;https://test.moysklad/api/remap/1.2/entity/supply/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/supply/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];SupplyDocumentPosition DELETE;https://test.moysklad/api/remap/1.2/entity/uom/ID;String;void GET;https://test.moysklad/api/remap/1.2/entity/cashout/metadata/customtemplate/;;ListEntity GET;https://test.moysklad/api/remap/1.2/entity/customentity/ENTITY_ID;CustomEntity;ListEntity @@ -831,7 +831,7 @@ PUT;https://test.moysklad/api/remap/1.2/entity/purchasereturn/new;String,List;Pu POST;https://test.moysklad/api/remap/1.2/entity/retaildemand/ID/export/;String,ExportRequest,File;void POST;https://test.moysklad/api/remap/1.2/entity/retailsalesreturn/;MetaEntity;MetaEntity GET;https://test.moysklad/api/remap/1.2/entity/purchaseorder/metadata/attributes/ID;String;Attribute -GET;https://test.moysklad/api/remap/1.2/entity/salesreturn/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/salesreturn/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];SalesReturnDocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/invoiceout/ID/positions/;String,List;ArrayList PUT;https://test.moysklad/api/remap/1.2/entity/purchaseorder/new;String,List;PurchaseOrder PUT;https://test.moysklad/api/remap/1.2/entity/employee/ID;String,MetaEntity;void @@ -839,11 +839,11 @@ DELETE;https://test.moysklad/api/remap/1.2/entity/retailsalesreturn/ID;String;vo POST;https://test.moysklad/api/remap/1.2/entity/processingorder/ID/export/;String,Template,ExportExtension,File;void POST;https://test.moysklad/api/remap/1.2/entity/cashin/ID/export/;String,Template,File;void GET;https://test.moysklad/api/remap/1.2/entity/counterparty/ENTITY_ID;MetaEntity,ApiParam[];Counterparty -GET;https://test.moysklad/api/remap/1.2/entity/salesreturn/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/salesreturn/ID/positions/ID;String,String,ApiParam[];SalesReturnDocumentPosition DELETE;https://test.moysklad/api/remap/1.2/entity/product/ENTITY_ID;MetaEntity;void PUT;https://test.moysklad/api/remap/1.2/entity/uom/ENTITY_ID;MetaEntity;void GET;https://test.moysklad/api/remap/1.2/entity/move/metadata/customtemplate/ID;String;Template -GET;https://test.moysklad/api/remap/1.2/entity/invoiceout/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/invoiceout/ID/positions/ID;String,String,ApiParam[];InvoiceDocumentPosition PUT;https://test.moysklad/api/remap/1.2/entity/purchaseorder/new;String,DocumentEntity;PurchaseOrder POST;https://test.moysklad/api/remap/1.2/entity/commissionreportin/ID/positions/;String,List;ArrayList PUT;https://test.moysklad/api/remap/1.2/entity/organization/ENTITY_ID;MetaEntity;void @@ -878,7 +878,7 @@ GET;https://test.moysklad/api/remap/1.2/entity/retailsalesreturn/metadata/custom POST;https://test.moysklad/api/remap/1.2/entity/supply/ID/positions/;String,DocumentPosition;DocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/retaildrawercashin/ID/export/;String,ExportRequest,File,boolean;void PUT;https://test.moysklad/api/remap/1.2/entity/counterparty/ENTITY_ID;MetaEntity;void -GET;https://test.moysklad/api/remap/1.2/entity/commissionreportout/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/commissionreportout/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];CommissionReportDocumentPosition GET;https://test.moysklad/api/remap/1.2/entity/pricelist/ENTITY_ID;MetaEntity,ApiParam[];Pricelist GET;https://test.moysklad/api/remap/1.2/entity/store/metadata;;MetadataAttributeSharedResponse POST;https://test.moysklad/api/remap/1.2/entity/processing/;MetaEntity;MetaEntity @@ -904,7 +904,7 @@ DELETE;https://test.moysklad/api/remap/1.2/entity/supply/ENTITY_ID;MetaEntity;vo POST;https://test.moysklad/api/remap/1.2/entity/loss/ID/export/;String,Template,File;void PUT;https://test.moysklad/api/remap/1.2/entity/paymentin/ID;String,MetaEntity;void DELETE;https://test.moysklad/api/remap/1.2/entity/commissionreportout/ENTITY_ID;MetaEntity;void -GET;https://test.moysklad/api/remap/1.2/entity/commissionreportout/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/commissionreportout/ID/positions/ID;String,String,ApiParam[];CommissionReportDocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/cashin/ID/export/;String,Template,ExportExtension,File;void GET;https://test.moysklad/api/remap/1.2/entity/task/ENTITY_ID;MetaEntity,ApiParam[];Task POST;https://test.moysklad/api/remap/1.2/entity/commissionreportout/ID/export/;String,Template,ExportExtension,File,boolean;void @@ -917,7 +917,7 @@ PUT;https://test.moysklad/api/remap/1.2/entity/commissionreportout/ID/positions/ POST;https://test.moysklad/api/remap/1.2/entity/facturein/ID/export/;String,Template,ExportExtension,File,boolean;void GET;https://test.moysklad/api/remap/1.2/entity/inventory/metadata/customtemplate/ID;String;Template DELETE;https://test.moysklad/api/remap/1.2/entity/customentity/ID;String;void -GET;https://test.moysklad/api/remap/1.2/entity/internalorder/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/internalorder/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];InternalOrderDocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/purchasereturn/ID/export/;String,ExportRequest,File;void GET;https://test.moysklad/api/remap/1.2/entity/productfolder/ENTITY_ID;MetaEntity,ApiParam[];ProductFolder GET;https://test.moysklad/api/remap/1.2/entity/customerorder/;ApiParam[];ListEntity @@ -961,10 +961,10 @@ POST;https://test.moysklad/api/remap/1.2/entity/processingplan/;MetaEntity;MetaE DELETE;https://test.moysklad/api/remap/1.2/entity/purchasereturn/DOCUMENT_ID/positions/ENTITY_ID;DocumentEntity,DocumentPosition;void POST;https://test.moysklad/api/remap/1.2/entity/move/ID/export/;String,Template,File,boolean;void PUT;https://test.moysklad/api/remap/1.2/entity/supply/new;DocumentTemplate;Supply -GET;https://test.moysklad/api/remap/1.2/entity/customerorder/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/customerorder/DOCUMENT_ID/positions/ID;DocumentEntity,String,ApiParam[];CustomerOrderDocumentPosition DELETE;https://test.moysklad/api/remap/1.2/entity/internalorder/DOCUMENT_ID/positions/ID;DocumentEntity,String;void GET;https://test.moysklad/api/remap/1.2/entity/product/ID;String,ApiParam[];Product -GET;https://test.moysklad/api/remap/1.2/entity/internalorder/ID/positions/ID;String,String,ApiParam[];DocumentPosition +GET;https://test.moysklad/api/remap/1.2/entity/internalorder/ID/positions/ID;String,String,ApiParam[];InternalOrderDocumentPosition POST;https://test.moysklad/api/remap/1.2/entity/cashout/ID/export/;String,Template,ExportExtension,File;void GET;https://test.moysklad/api/remap/1.2/entity/group/;ApiParam[];ListEntity GET;https://test.moysklad/api/remap/1.2/entity/internalorder/metadata/;;MetadataAttributeSharedStatesResponse From d85e720474e9083bd8a5cf518f3fcace92b88cf6 Mon Sep 17 00:00:00 2001 From: strubitsyn Date: Mon, 27 Jul 2020 10:48:34 +0300 Subject: [PATCH 13/14] MC-34258 changelog --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fcb7548..a250f877 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ Все крупные изменения в проекте будут отражены в этом файле. +## 1.2-release (27.07.2020) +* Добавлено массовое создание / удаление сущностей +* Добавлена возможность изменять настройки компании +* Добавлена работа со скидками +* Разделён DocumentPosition для разных типов документов +* Актуализированы поля документов + ## 1.1-release (08.06.2020) * Изменены типы полей `tiny` и `miniature` в справочнике `Image` c `MetaEntity` на `Meta` * Добавлено поле `reserve` в `DocumentPosition` From 411d90895d48b186d3dc92161b9258eefab6c6eb Mon Sep 17 00:00:00 2001 From: segorov Date: Mon, 27 Jul 2020 15:37:22 +0300 Subject: [PATCH 14/14] MC-34258 fix --- .../com/lognex/api/entities/SpecialPriceDiscountTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/lognex/api/entities/SpecialPriceDiscountTest.java b/src/test/java/com/lognex/api/entities/SpecialPriceDiscountTest.java index d30ddf3d..d174e9a3 100644 --- a/src/test/java/com/lognex/api/entities/SpecialPriceDiscountTest.java +++ b/src/test/java/com/lognex/api/entities/SpecialPriceDiscountTest.java @@ -1,6 +1,7 @@ package com.lognex.api.entities; import com.lognex.api.entities.discounts.SpecialPriceDiscount; +import com.lognex.api.entities.documents.Pricelist; import com.lognex.api.responses.ListEntity; import com.lognex.api.utils.ApiClientException; import org.junit.Test; @@ -28,7 +29,8 @@ public void SpecialPriceDiscountCrudTest() throws IOException, ApiClientExceptio specialPriceDiscount.setProductFolders(new ArrayList<>()); specialPriceDiscount.setDiscount(10.); specialPriceDiscount.setUsePriceType(false); - PriceType priceType = api.entity().pricelist().get().getRows().get(0).getPriceType(); + Pricelist priceList = simpleEntityManager.createSimplePricelist(); + PriceType priceType = priceList.getPriceType(); SpecialPriceDiscount.SpecialPriceData specialPriceData = new SpecialPriceDiscount.SpecialPriceData(); specialPriceData.setMeta(priceType.getMeta()); specialPriceDiscount.setSpecialPrice(specialPriceData);