@dascompany/product 3.1.4 → 3.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/DatabaseConnection.d.ts +1 -3
  2. package/dist/DatabaseConnection.js +1 -7
  3. package/dist/SQL.json +6 -10
  4. package/dist/index.d.ts +1 -5
  5. package/dist/index.js +1 -4
  6. package/dist/mappers/AccountAddressMapper.d.ts +9 -0
  7. package/dist/mappers/AccountAddressMapper.js +19 -0
  8. package/dist/mappers/AddressMapper.js +5 -0
  9. package/dist/mappers/CompanyDetailsMapper.js +6 -1
  10. package/dist/mappers/DeliveryDetailsMapper.js +10 -5
  11. package/dist/mappers/PersonalDataMapper.js +5 -0
  12. package/dist/reader/AccountAddressesReader.d.ts +7 -0
  13. package/dist/reader/AccountAddressesReader.js +26 -0
  14. package/dist/reader/OrderReader.js +1 -0
  15. package/dist/repo/AccountAddressesRepo.d.ts +6 -0
  16. package/dist/repo/AccountAddressesRepo.js +13 -0
  17. package/dist/repo/OrderRepo.js +1 -1
  18. package/dist/repo/OrderStatusRepo.d.ts +8 -0
  19. package/dist/repo/OrderStatusRepo.js +25 -0
  20. package/dist/stockObjects/AccountAddress.d.ts +11 -0
  21. package/dist/stockObjects/AccountAddress.js +26 -0
  22. package/dist/stockObjects/Client.d.ts +2 -2
  23. package/dist/stockObjects/Client.js +9 -1
  24. package/dist/stockObjects/Order.d.ts +4 -1
  25. package/dist/stockObjects/Order.js +7 -1
  26. package/dist/tables/TableNames.d.ts +0 -1
  27. package/dist/tables/TableNames.js +0 -1
  28. package/dist/tables/clients/AccountAddressesTable.d.ts +12 -0
  29. package/dist/tables/clients/AccountAddressesTable.js +41 -0
  30. package/dist/tables/clients/AccountDeliveryDetailsTable.d.ts +7 -0
  31. package/dist/tables/clients/AccountDeliveryDetailsTable.js +22 -0
  32. package/dist/tables/personalInformation/AddressesTable.d.ts +2 -1
  33. package/dist/tables/personalInformation/AddressesTable.js +10 -5
  34. package/dist/tables/personalInformation/DeliveryDetailsTable.d.ts +1 -1
  35. package/dist/tables/personalInformation/DeliveryDetailsTable.js +1 -2
  36. package/dist/tables/personalInformation/PersonalDataTable.d.ts +1 -0
  37. package/dist/tables/personalInformation/PersonalDataTable.js +5 -0
  38. package/dist/types/AccountAddressesI.d.ts +6 -0
  39. package/dist/types/AccountAddressesI.js +1 -0
  40. package/dist/types/OrderI.d.ts +1 -0
  41. package/dist/types/rows/AccountAddressesRow.d.ts +5 -0
  42. package/dist/types/rows/AccountAddressesRow.js +1 -0
  43. package/dist/types/rows/OrderRow.d.ts +1 -0
  44. package/dist/utils/calculateNetToGrossPrice.d.ts +1 -0
  45. package/dist/utils/calculateNetToGrossPrice.js +7 -0
  46. package/dist/utils/getTentInstallationPrice.d.ts +2 -0
  47. package/dist/utils/getTentInstallationPrice.js +14 -0
  48. package/package.json +1 -1
@@ -9,7 +9,6 @@ import PersonalDataTable from './tables/personalInformation/PersonalDataTable';
9
9
  import OrdersProductsTable from './tables/orders/OrdersProductsTable';
10
10
  import CompanyDetailsTable from './tables/personalInformation/CompanyDetailsTable';
11
11
  import DeliveryDetailsTable from './tables/personalInformation/DeliveryDetailsTable';
12
- import InvoiceDetailsTable from './tables/personalInformation/InvoiceDetailsTable';
13
12
  import DeliveryMethodsTable from './tables/settings/DeliveryMethodsTable';
14
13
  import PaymentMethodsTable from './tables/settings/PaymentMethodsTable';
15
14
  import PaymentStatusTypesTable from './tables/orders/PaymentStatusTypesTable';
@@ -21,7 +20,7 @@ import CompanyDataTable from './tables/settings/CompanyDataTable';
21
20
  import FileConnectionsTable from './tables/files/FileConnectionsTable';
22
21
  import AdminAccountsTable from './tables/public/AdminAccountsTable';
23
22
  import AccountCompanyDetailsTable from './tables/clients/AccountCompanyDetailsTable';
24
- import AccountDeliveryDetailsTable from './tables/clients/AccountDeliveryDetailsTable copy';
23
+ import AccountDeliveryDetailsTable from './tables/clients/AccountDeliveryDetailsTable';
25
24
  export default class DatabaseConnection {
26
25
  static instance: DatabaseConnection;
27
26
  private tables;
@@ -42,7 +41,6 @@ export default class DatabaseConnection {
42
41
  get personalData(): PersonalDataTable;
43
42
  get ordersProducts(): OrdersProductsTable;
44
43
  get deliveryDetails(): DeliveryDetailsTable;
45
- get invoiceDetails(): InvoiceDetailsTable;
46
44
  get deliveryMethods(): DeliveryMethodsTable;
47
45
  get paymentMethods(): PaymentMethodsTable;
48
46
  get paymentStatusTypes(): PaymentStatusTypesTable;
@@ -11,7 +11,6 @@ import PersonalDataTable from './tables/personalInformation/PersonalDataTable';
11
11
  import OrdersProductsTable from './tables/orders/OrdersProductsTable';
12
12
  import CompanyDetailsTable from './tables/personalInformation/CompanyDetailsTable';
13
13
  import DeliveryDetailsTable from './tables/personalInformation/DeliveryDetailsTable';
14
- import InvoiceDetailsTable from './tables/personalInformation/InvoiceDetailsTable';
15
14
  import DeliveryMethodsTable from './tables/settings/DeliveryMethodsTable';
16
15
  import PaymentMethodsTable from './tables/settings/PaymentMethodsTable';
17
16
  import PaymentStatusTypesTable from './tables/orders/PaymentStatusTypesTable';
@@ -23,7 +22,7 @@ import CompanyDataTable from './tables/settings/CompanyDataTable';
23
22
  import FileConnectionsTable from './tables/files/FileConnectionsTable';
24
23
  import AdminAccountsTable from './tables/public/AdminAccountsTable';
25
24
  import AccountCompanyDetailsTable from './tables/clients/AccountCompanyDetailsTable';
26
- import AccountDeliveryDetailsTable from './tables/clients/AccountDeliveryDetailsTable copy';
25
+ import AccountDeliveryDetailsTable from './tables/clients/AccountDeliveryDetailsTable';
27
26
  export default class DatabaseConnection {
28
27
  static instance;
29
28
  tables = new Map();
@@ -106,11 +105,6 @@ export default class DatabaseConnection {
106
105
  this.tables.set(TableNames.deliveryDetails, new DeliveryDetailsTable(this.connection));
107
106
  return this.tables.get(TableNames.deliveryDetails);
108
107
  }
109
- get invoiceDetails() {
110
- if (!this.tables.get(TableNames.invoiceDetails))
111
- this.tables.set(TableNames.invoiceDetails, new InvoiceDetailsTable(this.connection));
112
- return this.tables.get(TableNames.invoiceDetails);
113
- }
114
108
  get deliveryMethods() {
115
109
  if (!this.tables.get(TableNames.deliveryMethods))
116
110
  this.tables.set(TableNames.deliveryMethods, new DeliveryMethodsTable(this.connection));
package/dist/SQL.json CHANGED
@@ -34,23 +34,19 @@
34
34
  "delete": "DELETE FROM personal_information.delivery_details WHERE id = $id::BIGINT",
35
35
  "selectNextId": "SELECT nextval('personal_information.delivery_details_id'::regclass)"
36
36
  },
37
- "invoiceDetails": {
38
- "select": "SELECT * FROM personal_information.invoice_details",
39
- "insert": "INSERT INTO personal_information.invoice_details(id, personal_data_id, address_id) VALUES ($id::BIGINT, $personal_data_id::BIGINT, $address_id::BIGINT)",
40
- "update": "UPDATE personal_information.invoice_details SET personal_data_id = $personal_data_id::BIGINT, address_id = $address_id::BIGINT WHERE id = $id::BIGINT",
41
- "selectNextId": "SELECT nextval('personal_information.invoice_details_id'::regclass)"
42
- },
43
37
  "addresses": {
44
38
  "select": "SELECT * FROM personal_information.addresses",
45
39
  "insert": "INSERT INTO personal_information.addresses( id, country, city, postal_code, street, house_number, apartment_number) VALUES( $id::BIGINT, $country::TEXT, $city::TEXT, $postal_code::TEXT, $street::TEXT, $house_number::TEXT, $apartment_number::TEXT) ",
46
40
  "update": "UPDATE personal_information.addresses SET country = $country::TEXT, city = $city::TEXT, postal_code = $postal_code::TEXT , street = $street::TEXT , house_number = $house_number::TEXT , apartment_number = $apartment_number::TEXT WHERE id = $id::BIGINT",
47
- "selectNextId": "SELECT nextval('personal_information.addresses_id'::regclass)"
41
+ "selectNextId": "SELECT nextval('personal_information.addresses_id'::regclass)",
42
+ "delete": "DELETE FROM personal_information.addresses WHERE id = $id::BIGINT"
48
43
  },
49
44
  "personalData": {
50
45
  "select": "SELECT * FROM personal_information.personal_data",
51
46
  "insert": "INSERT INTO personal_information.personal_data (id, first_name, last_name, email, phone_number) VALUES ($id::BIGINT, $first_name::TEXT, $last_name::TEXT, $email::TEXT, $phone_number::TEXT)",
52
47
  "update": "UPDATE personal_information.personal_data SET email = $email::TEXT, first_name = $first_name::TEXT, last_name= $last_name::TEXT, phone_number = $phone_number::TEXT WHERE id = $id::BIGINT",
53
- "selectNextId": "SELECT nextval('personal_information.personal_data_id'::regclass)"
48
+ "selectNextId": "SELECT nextval('personal_information.personal_data_id'::regclass)",
49
+ "delete": "DELETE FROM personal_information.personal_data WHERE id = $id::BIGINT"
54
50
  },
55
51
  "companyDetails": {
56
52
  "select": "SELECT * FROM personal_information.company_details",
@@ -71,8 +67,8 @@
71
67
  },
72
68
  "orders": {
73
69
  "select": "SELECT * FROM orders.orders",
74
- "insert": "INSERT INTO orders.orders( id, email, price, client_id, delivery_details_id, company_details_id, payment_details_id ) VALUES ($order_id::BIGINT, $email::TEXT, $price::DOUBLE PRECISION, $client_id::BIGINT, $delivery_details_id::BIGINT , $company_details_id::BIGINT, $payment_details_id::BIGINT )",
75
- "update": "UPDATE orders.orders SET price = $price::DOUBLE PRECISION, delivery_details_id = $delivery_details_id::BIGINT, company_details_id = $company_details_id::BIGINT, payment_details_id = $payment_details_id::BIGINT, zsi_id = $zsi_id::BIGINT WHERE id = $id::BIGINT",
70
+ "insert": "INSERT INTO orders.orders( id, email, price, client_id, delivery_details_id, company_details_id, payment_details_id, invoice ) VALUES ($order_id::BIGINT, $email::TEXT, $price::DOUBLE PRECISION, $client_id::BIGINT, $delivery_details_id::BIGINT , $company_details_id::BIGINT, $payment_details_id::BIGINT, $invoice::BOOL )",
71
+ "update": "UPDATE orders.orders SET price = $price::DOUBLE PRECISION, delivery_details_id = $delivery_details_id::BIGINT, company_details_id = $company_details_id::BIGINT, payment_details_id = $payment_details_id::BIGINT, zsi_id = $zsi_id::BIGINT, invoice = $invoice::BIGINT WHERE id = $id::BIGINT",
76
72
  "count": "SELECT COUNT (*) AS TOTAL_ROWS FROM orders.orders",
77
73
  "selectNextId": "SELECT nextval('orders.orders_id'::regclass)"
78
74
  },
package/dist/index.d.ts CHANGED
@@ -30,10 +30,6 @@ import DeliveryMethodTypeE from "./types/DeliveryMethodTypeE";
30
30
  import DeliveryStatus from "./stockObjects/DeliveryStatus";
31
31
  import DeliveryStatusReader from './reader/DeliveryStatusReader';
32
32
  import DeliveryStatusTypeE from "./types/DeliveryStatusTypeE";
33
- import InvoiceDetails from "./stockObjects/InvoiceDetails";
34
- import InvoiceDetailsRepo from "./repo/InvoiceDetailsRepo";
35
- import InvoiceDetailsReader from "./reader/InvoiceDetailsReader";
36
- import InvoiceDetailsI from "./types/InvoiceDetailsI";
37
33
  import PaymentDetails from "./stockObjects/PaymentDetails";
38
34
  import PaymentDetailsRepo from "./repo/PaymentDetailsRepo";
39
35
  import PaymentDetailsReader from "./reader/payment/PaymentDetailsReader";
@@ -76,4 +72,4 @@ import CompanyDataReader from "./reader/CompanyDataReader";
76
72
  import CompanyDataI from "./types/CompanyDataI";
77
73
  import PriceConverter from "./utils/PriceConverter";
78
74
  import createQueryOptionsForId from "./utils/createQueryOptionsForId";
79
- export { Client, ClientAccountRepo, ClientAccountReader, AccountDeliveryDetailsReader, AccountCompanyDetailsReader, Admin, AdminRepo, AdminReader, Address, AddressI, AddressesRepo, AddressesReader, PersonalData, PersonalDataRepo, PersonalDataReader, PersonalDataI, CompanyDetails, CompanyDetailsRepo, CompanyDetailsReader, CompanyDetailsI, DeliveryDetails, DeliveryDetailsRepo, DeliveryDetailsReader, DeliveryDetailsI, DeliveryMethods, DeliveryMethodRepo, DeliveryMethodReader, DeliveryMethodI, DeliveryMethodTypeE, DeliveryStatus, DeliveryStatusReader, DeliveryStatusTypeE, InvoiceDetails, InvoiceDetailsRepo, InvoiceDetailsReader, InvoiceDetailsI, PaymentDetails, PaymentDetailsRepo, PaymentDetailsReader, PaymentDetailsI, PaymentMethods, PaymentMethodRepo, PaymentMethodReader, PaymentMethodE, PaymentMethodI, PaymentStatus, PaymentStatusesReader, PaymentStatusE, Order, OrderRepo, OrderReader, OrderProduct, OrderProductsRepo, OrderProductsReader, OrderProductI, Status, OrderStatusReader, StatusI, OrderStatusTypeE, StatusTypesReader, ProductI, Product, ProductRepo, ProductReader, File, FilesRepo, FilesReader, FileI, FileConnection, FileConnectionsRepo, FileConnectionsReader, FileConnectionTypeE, CompanyData, CompanyDataRepo, CompanyDataReader, CompanyDataI, PriceConverter, createQueryOptionsForId };
75
+ export { Client, ClientAccountRepo, ClientAccountReader, AccountDeliveryDetailsReader, AccountCompanyDetailsReader, Admin, AdminRepo, AdminReader, Address, AddressI, AddressesRepo, AddressesReader, PersonalData, PersonalDataRepo, PersonalDataReader, PersonalDataI, CompanyDetails, CompanyDetailsRepo, CompanyDetailsReader, CompanyDetailsI, DeliveryDetails, DeliveryDetailsRepo, DeliveryDetailsReader, DeliveryDetailsI, DeliveryMethods, DeliveryMethodRepo, DeliveryMethodReader, DeliveryMethodI, DeliveryMethodTypeE, DeliveryStatus, DeliveryStatusReader, DeliveryStatusTypeE, PaymentDetails, PaymentDetailsRepo, PaymentDetailsReader, PaymentDetailsI, PaymentMethods, PaymentMethodRepo, PaymentMethodReader, PaymentMethodE, PaymentMethodI, PaymentStatus, PaymentStatusesReader, PaymentStatusE, Order, OrderRepo, OrderReader, OrderProduct, OrderProductsRepo, OrderProductsReader, OrderProductI, Status, OrderStatusReader, StatusI, OrderStatusTypeE, StatusTypesReader, ProductI, Product, ProductRepo, ProductReader, File, FilesRepo, FilesReader, FileI, FileConnection, FileConnectionsRepo, FileConnectionsReader, FileConnectionTypeE, CompanyData, CompanyDataRepo, CompanyDataReader, CompanyDataI, PriceConverter, createQueryOptionsForId };
package/dist/index.js CHANGED
@@ -25,9 +25,6 @@ import DeliveryMethodTypeE from "./types/DeliveryMethodTypeE";
25
25
  import DeliveryStatus from "./stockObjects/DeliveryStatus";
26
26
  import DeliveryStatusReader from './reader/DeliveryStatusReader';
27
27
  import DeliveryStatusTypeE from "./types/DeliveryStatusTypeE";
28
- import InvoiceDetails from "./stockObjects/InvoiceDetails";
29
- import InvoiceDetailsRepo from "./repo/InvoiceDetailsRepo";
30
- import InvoiceDetailsReader from "./reader/InvoiceDetailsReader";
31
28
  import PaymentDetails from "./stockObjects/PaymentDetails";
32
29
  import PaymentDetailsRepo from "./repo/PaymentDetailsRepo";
33
30
  import PaymentDetailsReader from "./reader/payment/PaymentDetailsReader";
@@ -63,4 +60,4 @@ import CompanyDataRepo from "./repo/CompanyDataRepo";
63
60
  import CompanyDataReader from "./reader/CompanyDataReader";
64
61
  import PriceConverter from "./utils/PriceConverter";
65
62
  import createQueryOptionsForId from "./utils/createQueryOptionsForId";
66
- export { Client, ClientAccountRepo, ClientAccountReader, AccountDeliveryDetailsReader, AccountCompanyDetailsReader, Admin, AdminRepo, AdminReader, Address, AddressesRepo, AddressesReader, PersonalData, PersonalDataRepo, PersonalDataReader, CompanyDetails, CompanyDetailsRepo, CompanyDetailsReader, DeliveryDetails, DeliveryDetailsRepo, DeliveryDetailsReader, DeliveryMethods, DeliveryMethodRepo, DeliveryMethodReader, DeliveryMethodTypeE, DeliveryStatus, DeliveryStatusReader, DeliveryStatusTypeE, InvoiceDetails, InvoiceDetailsRepo, InvoiceDetailsReader, PaymentDetails, PaymentDetailsRepo, PaymentDetailsReader, PaymentMethods, PaymentMethodRepo, PaymentMethodReader, PaymentMethodE, PaymentStatus, PaymentStatusesReader, PaymentStatusE, Order, OrderRepo, OrderReader, OrderProduct, OrderProductsRepo, OrderProductsReader, Status, OrderStatusReader, OrderStatusTypeE, StatusTypesReader, Product, ProductRepo, ProductReader, File, FilesRepo, FilesReader, FileConnection, FileConnectionsRepo, FileConnectionsReader, FileConnectionTypeE, CompanyData, CompanyDataRepo, CompanyDataReader, PriceConverter, createQueryOptionsForId };
63
+ export { Client, ClientAccountRepo, ClientAccountReader, AccountDeliveryDetailsReader, AccountCompanyDetailsReader, Admin, AdminRepo, AdminReader, Address, AddressesRepo, AddressesReader, PersonalData, PersonalDataRepo, PersonalDataReader, CompanyDetails, CompanyDetailsRepo, CompanyDetailsReader, DeliveryDetails, DeliveryDetailsRepo, DeliveryDetailsReader, DeliveryMethods, DeliveryMethodRepo, DeliveryMethodReader, DeliveryMethodTypeE, DeliveryStatus, DeliveryStatusReader, DeliveryStatusTypeE, PaymentDetails, PaymentDetailsRepo, PaymentDetailsReader, PaymentMethods, PaymentMethodRepo, PaymentMethodReader, PaymentMethodE, PaymentStatus, PaymentStatusesReader, PaymentStatusE, Order, OrderRepo, OrderReader, OrderProduct, OrderProductsRepo, OrderProductsReader, Status, OrderStatusReader, OrderStatusTypeE, StatusTypesReader, Product, ProductRepo, ProductReader, File, FilesRepo, FilesReader, FileConnection, FileConnectionsRepo, FileConnectionsReader, FileConnectionTypeE, CompanyData, CompanyDataRepo, CompanyDataReader, PriceConverter, createQueryOptionsForId };
@@ -0,0 +1,9 @@
1
+ import { StockObjectMapper } from "@dascompany/database";
2
+ import AccountAddress from "../stockObjects/AccountAddress";
3
+ export default class AccountAddressMapper implements StockObjectMapper {
4
+ private accountAddress;
5
+ private accountAddressessTable;
6
+ constructor(accountAddress: AccountAddress);
7
+ save(): Promise<void>;
8
+ delete(): Promise<void>;
9
+ }
@@ -0,0 +1,19 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ export default class AccountAddressMapper {
3
+ accountAddress;
4
+ accountAddressessTable;
5
+ constructor(accountAddress) {
6
+ this.accountAddressessTable = DatabaseConnection.getInstance().accountAddresses;
7
+ this.accountAddress = accountAddress;
8
+ }
9
+ async save() {
10
+ await this.accountAddressessTable.insert(this.accountAddress);
11
+ }
12
+ async delete() {
13
+ const accountAddressId = this.accountAddress.getId();
14
+ if (accountAddressId)
15
+ await this.accountAddressessTable.delete(accountAddressId);
16
+ else
17
+ throw new Error('Can`t remove the order and product connection without providing its ID');
18
+ }
19
+ }
@@ -13,5 +13,10 @@ export default class AddressMapper {
13
13
  await this.addressesTable.insert(this.address);
14
14
  }
15
15
  async delete() {
16
+ const id = this.address.getId();
17
+ if (id)
18
+ await this.addressesTable.delete(id);
19
+ else
20
+ throw Error('Uncreated personalData cannot be deleted');
16
21
  }
17
22
  }
@@ -1,4 +1,6 @@
1
1
  import DatabaseConnection from "../DatabaseConnection";
2
+ import AddressesRepo from "../repo/AddressesRepo";
3
+ import createQueryOptionsForId from "../utils/createQueryOptionsForId";
2
4
  export default class CompanyDetailsMapper {
3
5
  companyDetails;
4
6
  companyDetailsTable;
@@ -14,8 +16,11 @@ export default class CompanyDetailsMapper {
14
16
  }
15
17
  async delete() {
16
18
  const id = this.companyDetails.getId();
17
- if (id)
19
+ if (id) {
20
+ const address = await AddressesRepo.get(createQueryOptionsForId(this.companyDetails.getAddressId()));
21
+ address.delete();
18
22
  await this.companyDetailsTable.delete(id);
23
+ }
19
24
  else
20
25
  throw Error('Uncreated companyDetails cannot be deleted');
21
26
  }
@@ -16,10 +16,15 @@ export default class DeliveryDetailsMapper {
16
16
  await this.deliveryDetailsTable.insert(this.deliveryDetails);
17
17
  }
18
18
  async delete() {
19
- const personalData = await PersonalDataRepo.get(createQueryOptionsForId(this.deliveryDetails.getPersonalDataId()));
20
- personalData.delete();
21
- const address = await AddressesRepo.get(createQueryOptionsForId(this.deliveryDetails.getAddressId()));
22
- address.delete();
23
- await this.deliveryDetailsTable.delete(this.deliveryDetails);
19
+ const id = this.deliveryDetails.getId();
20
+ if (id) {
21
+ const personalData = await PersonalDataRepo.get(createQueryOptionsForId(this.deliveryDetails.getPersonalDataId()));
22
+ personalData.delete();
23
+ const address = await AddressesRepo.get(createQueryOptionsForId(this.deliveryDetails.getAddressId()));
24
+ address.delete();
25
+ await this.deliveryDetailsTable.delete(id);
26
+ }
27
+ else
28
+ throw Error('Uncreated companyDetails cannot be deleted');
24
29
  }
25
30
  }
@@ -13,5 +13,10 @@ export default class PersonalDataMapper {
13
13
  await this.personalDataTable.insert(this.personalData);
14
14
  }
15
15
  async delete() {
16
+ const id = this.personalData.getId();
17
+ if (id)
18
+ await this.personalDataTable.delete(id);
19
+ else
20
+ throw Error('Uncreated personalData cannot be deleted');
16
21
  }
17
22
  }
@@ -0,0 +1,7 @@
1
+ import { QueryOptions } from "@dascompany/database";
2
+ import AccountAddressesI from "../types/AccountAddressesI";
3
+ export default class AccountAddressesReader {
4
+ static getAll(queryOptions?: QueryOptions): Promise<AccountAddressesI[]>;
5
+ private static correctAccountAddresses;
6
+ private static correctAccountAddress;
7
+ }
@@ -0,0 +1,26 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ import AddressesReader from "./AddressesReader";
3
+ import createQueryOptionsForId from "../utils/createQueryOptionsForId";
4
+ export default class AccountAddressesReader {
5
+ static async getAll(queryOptions) {
6
+ const accountAddresses = await DatabaseConnection.getInstance().accountAddresses.selectAll(queryOptions);
7
+ return this.correctAccountAddresses(accountAddresses);
8
+ }
9
+ static async correctAccountAddresses(accountAddresses) {
10
+ const correctAccountAddresses = [];
11
+ for (let i = 0; i < accountAddresses.length; i++) {
12
+ const correctAccountAddress = await this.correctAccountAddress(accountAddresses[i]);
13
+ correctAccountAddresses.push(correctAccountAddress);
14
+ }
15
+ return correctAccountAddresses;
16
+ }
17
+ static async correctAccountAddress(accountAddress) {
18
+ const address = await AddressesReader.get(createQueryOptionsForId(accountAddress.address_id));
19
+ const correctAddress = {
20
+ id: accountAddress.id,
21
+ accountId: accountAddress.account_id,
22
+ address: address
23
+ };
24
+ return correctAddress;
25
+ }
26
+ }
@@ -46,6 +46,7 @@ export default class OrderReader {
46
46
  companyDetailsId: order.company_details_id,
47
47
  paymentDetailsId: order.payment_details_id,
48
48
  zsiId: order.zsi_id,
49
+ invoice: order.invoice,
49
50
  status
50
51
  };
51
52
  return correctOrder;
@@ -0,0 +1,6 @@
1
+ import { QueryOptions } from "@dascompany/database";
2
+ import AccountAddress from "../stockObjects/AccountAddress";
3
+ export default class AccountAddressesRepo {
4
+ static get(queryOptions: QueryOptions): Promise<AccountAddress>;
5
+ private static createAccountAddressFromRow;
6
+ }
@@ -0,0 +1,13 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ import AccountAddress from "../stockObjects/AccountAddress";
3
+ export default class AccountAddressesRepo {
4
+ static async get(queryOptions) {
5
+ const accountAddress = await DatabaseConnection.getInstance().accountAddresses.select(queryOptions);
6
+ return this.createAccountAddressFromRow(accountAddress);
7
+ }
8
+ static async createAccountAddressFromRow(dataRow) {
9
+ const accountAddress = new AccountAddress(dataRow.account_id, dataRow.address_id);
10
+ accountAddress.setId(dataRow.id);
11
+ return accountAddress;
12
+ }
13
+ }
@@ -6,7 +6,7 @@ export default class OrderRepo {
6
6
  return this.createOrderFromRow(orderData);
7
7
  }
8
8
  static createOrderFromRow(orderData) {
9
- const order = new Order(orderData.email, orderData.price, orderData.client_id, orderData.delivery_details_id, orderData.company_details_id, orderData.payment_details_id);
9
+ const order = new Order(orderData.email, orderData.price, orderData.client_id, orderData.delivery_details_id, orderData.company_details_id, orderData.payment_details_id, orderData.invoice);
10
10
  order.setId(orderData.id);
11
11
  return order;
12
12
  }
@@ -0,0 +1,8 @@
1
+ import { QueryOptions } from "@dascompany/database";
2
+ import Status from "../stockObjects/Status";
3
+ export default class OrderStatusRepo {
4
+ static get(queryOptions: QueryOptions): Promise<Status>;
5
+ static getAll(queryOptions?: QueryOptions): Promise<Status[]>;
6
+ private static createStatusesFromRows;
7
+ private static createStatusFromRow;
8
+ }
@@ -0,0 +1,25 @@
1
+ import DatabaseConnection from "../DatabaseConnection";
2
+ import Status from "../stockObjects/Status";
3
+ export default class OrderStatusRepo {
4
+ static async get(queryOptions) {
5
+ const status = await DatabaseConnection.getInstance().statuses.select(queryOptions);
6
+ return this.createStatusFromRow(status);
7
+ }
8
+ static async getAll(queryOptions) {
9
+ const statuses = await DatabaseConnection.getInstance().statuses.selectAll(queryOptions);
10
+ return this.createStatusesFromRows(statuses);
11
+ }
12
+ static async createStatusesFromRows(dataRows) {
13
+ const statuses = [];
14
+ for (const dataRow of dataRows) {
15
+ const status = await this.createStatusFromRow(dataRow);
16
+ statuses.push(status);
17
+ }
18
+ return statuses;
19
+ }
20
+ static async createStatusFromRow(dataRow) {
21
+ const status = new Status(dataRow.order_id, dataRow.user_id, dataRow.type, dataRow.created_at);
22
+ status.setId(dataRow.id);
23
+ return status;
24
+ }
25
+ }
@@ -0,0 +1,11 @@
1
+ import { StockObject, StockObjectMapper } from "@dascompany/database";
2
+ export default class AccountAddress extends StockObject {
3
+ private accountId;
4
+ private addressId;
5
+ constructor(accountId: number, addressId: number);
6
+ getAccountId(): number;
7
+ getAddressId(): number;
8
+ setAccountId(accountId: number): void;
9
+ setAddressId(addressId: number): void;
10
+ protected getMapper(): StockObjectMapper;
11
+ }
@@ -0,0 +1,26 @@
1
+ import { StockObject } from "@dascompany/database";
2
+ import AccountAddressMapper from "../mappers/AccountAddressMapper";
3
+ export default class AccountAddress extends StockObject {
4
+ accountId;
5
+ addressId;
6
+ constructor(accountId, addressId) {
7
+ super();
8
+ this.accountId = accountId;
9
+ this.addressId = addressId;
10
+ }
11
+ getAccountId() {
12
+ return this.accountId;
13
+ }
14
+ getAddressId() {
15
+ return this.addressId;
16
+ }
17
+ setAccountId(accountId) {
18
+ this.accountId = accountId;
19
+ }
20
+ setAddressId(addressId) {
21
+ this.addressId = addressId;
22
+ }
23
+ getMapper() {
24
+ return new AccountAddressMapper(this);
25
+ }
26
+ }
@@ -18,10 +18,10 @@ export default class Client extends StockObject {
18
18
  setDeleted(deleted: boolean): void;
19
19
  setPersonalDetailsId(personalDetailsId: number): void;
20
20
  setDeliveryDetailsId(deliveryDetailsId: number | null): void;
21
- setCompanyDetailsId(companyDetailsId: number): void;
21
+ setCompanyDetailsId(companyDetailsId: number | null): void;
22
22
  addCompanyDetails(companyDetailsId: number): Promise<void>;
23
23
  addDeliveryDetails(deliveryDetailsId: number): Promise<void>;
24
24
  deleteDeliveryDetails(deliveryDetailsId: number): Promise<void>;
25
- getCompanyDetails(): void;
25
+ getCompanyDetails(companyDetailsId: number): Promise<void>;
26
26
  protected getMapper(): StockObjectMapper;
27
27
  }
@@ -3,6 +3,7 @@ import ClientMapper from "../mappers/ClientMapper";
3
3
  import DatabaseConnection from "../DatabaseConnection";
4
4
  import DeliveryDetailsRepo from "../repo/DeliveryDetailsRepo";
5
5
  import createQueryOptionsForId from "../utils/createQueryOptionsForId";
6
+ import CompanyDetailsRepo from "../repo/CompanyDetailsRepo";
6
7
  export default class Client extends StockObject {
7
8
  email;
8
9
  activated;
@@ -77,7 +78,14 @@ export default class Client extends StockObject {
77
78
  const deliveryDetails = await DeliveryDetailsRepo.get(createQueryOptionsForId(deliveryDetailsId));
78
79
  deliveryDetails.delete();
79
80
  }
80
- getCompanyDetails() {
81
+ async getCompanyDetails(companyDetailsId) {
82
+ await DatabaseConnection.getInstance().accountCompanyDetails.delete(companyDetailsId);
83
+ if (this.companyDetailsId == companyDetailsId) {
84
+ this.setCompanyDetailsId(null);
85
+ await DatabaseConnection.getInstance().clientAccounts.update(this);
86
+ }
87
+ const companyDetails = await CompanyDetailsRepo.get(createQueryOptionsForId(companyDetailsId));
88
+ companyDetails.delete();
81
89
  }
82
90
  getMapper() {
83
91
  return new ClientMapper(this);
@@ -6,12 +6,14 @@ export default class Order extends StockObject {
6
6
  private deliveryDetailsId;
7
7
  private companyDetailsId;
8
8
  private paymentDetailsId;
9
+ private invoice;
9
10
  private zsiId;
10
- constructor(email: string, price: number, clientId: number | null, deliveryDetailsId: number, companyDetailsId?: number | null, paymentDetailsId?: number | null);
11
+ constructor(email: string, price: number, clientId: number | null, deliveryDetailsId: number, companyDetailsId?: number | null, paymentDetailsId?: number | null, invoice?: boolean);
11
12
  getData(): Promise<{
12
13
  id: number | null;
13
14
  email: string;
14
15
  price: number;
16
+ invoice: boolean;
15
17
  clientId: number | null;
16
18
  deliveryDetailsId: number | null;
17
19
  companyDetailsId: number | null;
@@ -25,6 +27,7 @@ export default class Order extends StockObject {
25
27
  getDeliveryDetailsId(): number | null;
26
28
  getCompanyDetailsId(): number | null;
27
29
  getPaymentDetailsId(): number | null;
30
+ isInvoice(): boolean;
28
31
  setPrice(price: number): void;
29
32
  setclientId(clientId: number): void;
30
33
  setDeliveryDetailsId(deliveryDetailsId: number): void;
@@ -9,8 +9,9 @@ export default class Order extends StockObject {
9
9
  deliveryDetailsId;
10
10
  companyDetailsId;
11
11
  paymentDetailsId;
12
+ invoice;
12
13
  zsiId;
13
- constructor(email, price, clientId, deliveryDetailsId, companyDetailsId = null, paymentDetailsId = null) {
14
+ constructor(email, price, clientId, deliveryDetailsId, companyDetailsId = null, paymentDetailsId = null, invoice = false) {
14
15
  super();
15
16
  this.email = email;
16
17
  this.price = price;
@@ -18,6 +19,7 @@ export default class Order extends StockObject {
18
19
  this.deliveryDetailsId = deliveryDetailsId;
19
20
  this.companyDetailsId = companyDetailsId;
20
21
  this.paymentDetailsId = paymentDetailsId;
22
+ this.invoice = invoice;
21
23
  this.zsiId = null;
22
24
  }
23
25
  async getData() {
@@ -25,6 +27,7 @@ export default class Order extends StockObject {
25
27
  id: this.getId(),
26
28
  email: this.email,
27
29
  price: this.price,
30
+ invoice: this.invoice,
28
31
  clientId: this.clientId,
29
32
  deliveryDetailsId: this.deliveryDetailsId,
30
33
  companyDetailsId: this.companyDetailsId,
@@ -56,6 +59,9 @@ export default class Order extends StockObject {
56
59
  getPaymentDetailsId() {
57
60
  return this.paymentDetailsId;
58
61
  }
62
+ isInvoice() {
63
+ return this.invoice;
64
+ }
59
65
  setPrice(price) {
60
66
  this.price = price;
61
67
  }
@@ -17,7 +17,6 @@ declare enum TableNames {
17
17
  deliveryDetails = "deliveryDetailsTable",
18
18
  deliveryStatuses = "deliveryStatusesTable",
19
19
  deliveryStatusTypes = "deliveryStatusTypesTable",
20
- invoiceDetails = "invoiceDetailsTable",
21
20
  personalData = "personalDataTable",
22
21
  products = "productsTable",
23
22
  companyData = "companyDataTable",
@@ -18,7 +18,6 @@ var TableNames;
18
18
  TableNames["deliveryDetails"] = "deliveryDetailsTable";
19
19
  TableNames["deliveryStatuses"] = "deliveryStatusesTable";
20
20
  TableNames["deliveryStatusTypes"] = "deliveryStatusTypesTable";
21
- TableNames["invoiceDetails"] = "invoiceDetailsTable";
22
21
  TableNames["personalData"] = "personalDataTable";
23
22
  TableNames["products"] = "productsTable";
24
23
  TableNames["companyData"] = "companyDataTable";
@@ -0,0 +1,12 @@
1
+ import { QueryOptions, Table } from '@dascompany/database';
2
+ import AccountAddressesRow from '../../types/rows/AccountAddressesRow';
3
+ import AccountAddress from '../../stockObjects/AccountAddress';
4
+ export default class AccountAddressesTable extends Table {
5
+ select(queryOptions: QueryOptions): Promise<AccountAddressesRow>;
6
+ selectAll(queryOptions?: QueryOptions): Promise<AccountAddressesRow[]>;
7
+ selectId(queryOptions: QueryOptions): Promise<number | null>;
8
+ delete(id: number): Promise<number>;
9
+ private bindParameters;
10
+ insert(AccountAddresses: AccountAddress): Promise<void>;
11
+ private selectNextId;
12
+ }
@@ -0,0 +1,41 @@
1
+ import { Table } from '@dascompany/database';
2
+ import * as SQL from '../../SQL.json';
3
+ export default class AccountAddressesTable extends Table {
4
+ async select(queryOptions) {
5
+ const query = this.createQuery(SQL.accountAddresses.select, queryOptions);
6
+ const result = await query.execute();
7
+ return result.getRow();
8
+ }
9
+ async selectAll(queryOptions) {
10
+ const query = this.createQuery(SQL.accountAddresses.select, queryOptions);
11
+ const result = await query.execute();
12
+ return result.getRows();
13
+ }
14
+ async selectId(queryOptions) {
15
+ const query = this.createQuery(SQL.accountAddresses.selectId, queryOptions);
16
+ const result = await query.execute();
17
+ return result.getValue();
18
+ }
19
+ async delete(id) {
20
+ const query = this.createQuery(SQL.accountAddresses.delete);
21
+ query.bindParameter('id', id);
22
+ const result = await query.execute();
23
+ return result.getRowCount();
24
+ }
25
+ bindParameters(query, AccountAddresses) {
26
+ query.bindParameter('account_id', AccountAddresses.getAccountId());
27
+ query.bindParameter('address_id', AccountAddresses.getAddressId());
28
+ }
29
+ async insert(AccountAddresses) {
30
+ const id = await this.selectNextId();
31
+ const query = this.createQuery(SQL.accountAddresses.insert);
32
+ this.bindParameters(query, AccountAddresses);
33
+ await query.execute();
34
+ AccountAddresses.setId(id);
35
+ }
36
+ async selectNextId() {
37
+ const query = this.createQuery(SQL.accountAddresses.selectNextId);
38
+ const result = await query.execute();
39
+ return result.getValue();
40
+ }
41
+ }
@@ -0,0 +1,7 @@
1
+ import { Table } from '@dascompany/database';
2
+ import AccountDeliveryDetailsRow from '../../types/rows/AccountDeliveryDetailsRow';
3
+ export default class AccountDeliveryDetailsTable extends Table {
4
+ selectAll(accountId: number): Promise<AccountDeliveryDetailsRow[]>;
5
+ delete(deliveryDetailsId: number): Promise<number>;
6
+ insert(acoountId: number, deliveryDetailsId: number): Promise<void>;
7
+ }
@@ -0,0 +1,22 @@
1
+ import { Table } from '@dascompany/database';
2
+ import * as SQL from '../../SQL.json';
3
+ export default class AccountDeliveryDetailsTable extends Table {
4
+ async selectAll(accountId) {
5
+ const query = this.createQuery(SQL.accountDeliveryDetails.select);
6
+ query.bindParameter('account_id', accountId);
7
+ const result = await query.execute();
8
+ return result.getRows();
9
+ }
10
+ async delete(deliveryDetailsId) {
11
+ const query = this.createQuery(SQL.accountDeliveryDetails.delete);
12
+ query.bindParameter('delivery_details_id', deliveryDetailsId);
13
+ const result = await query.execute();
14
+ return result.getRowCount();
15
+ }
16
+ async insert(acoountId, deliveryDetailsId) {
17
+ const query = this.createQuery(SQL.accountDeliveryDetails.insert);
18
+ query.bindParameter('delivery_details_id', deliveryDetailsId);
19
+ query.bindParameter('account_id', acoountId);
20
+ await query.execute();
21
+ }
22
+ }
@@ -5,6 +5,7 @@ export default class AddressesTable extends Table {
5
5
  select(queryOptions: QueryOptions): Promise<AddressRow>;
6
6
  update(addressData: Address): Promise<void>;
7
7
  insert(address: Address): Promise<void>;
8
- private bindParameters;
9
8
  private selectNextId;
9
+ delete(id: number): Promise<void>;
10
+ private bindParameters;
10
11
  }
@@ -20,6 +20,16 @@ export default class AddressesTable extends Table {
20
20
  await query.execute();
21
21
  address.setId(id);
22
22
  }
23
+ async selectNextId() {
24
+ const query = this.createQuery(SQL.addresses.selectNextId);
25
+ const result = await query.execute();
26
+ return result.getValue();
27
+ }
28
+ async delete(id) {
29
+ const query = this.createQuery(SQL.addresses.delete);
30
+ query.bindParameter('id', id);
31
+ await query.execute();
32
+ }
23
33
  bindParameters(query, address) {
24
34
  query.bindParameter('country', address.getCountry());
25
35
  query.bindParameter('city', address.getCity());
@@ -28,9 +38,4 @@ export default class AddressesTable extends Table {
28
38
  query.bindParameter('house_number', address.getHouseNumber());
29
39
  query.bindParameter('apartment_number', address.getApartmentNumber());
30
40
  }
31
- async selectNextId() {
32
- const query = this.createQuery(SQL.addresses.selectNextId);
33
- const result = await query.execute();
34
- return result.getValue();
35
- }
36
41
  }
@@ -5,7 +5,7 @@ export default class DeliveryDetailsTable extends Table {
5
5
  select(queryOptions: QueryOptions): Promise<DeliveryDetailsRow>;
6
6
  insert(deliveryDetails: DeliveryDetails): Promise<void>;
7
7
  update(deliveryDetails: DeliveryDetails): Promise<void>;
8
- delete(deliveryDetails: DeliveryDetails): Promise<void>;
8
+ delete(id: number): Promise<void>;
9
9
  private selectNextId;
10
10
  private bindParameters;
11
11
  }
@@ -21,8 +21,7 @@ export default class DeliveryDetailsTable extends Table {
21
21
  this.bindParameters(query, deliveryDetails);
22
22
  await query.execute();
23
23
  }
24
- async delete(deliveryDetails) {
25
- const id = deliveryDetails.getId();
24
+ async delete(id) {
26
25
  const query = this.createQuery(SQL.deliveryDetails.delete);
27
26
  query.bindParameter('id', id);
28
27
  await query.execute();
@@ -6,5 +6,6 @@ export default class PersonalDataTable extends Table {
6
6
  insert(personalData: PersonalData): Promise<void>;
7
7
  update(personalData: PersonalData): Promise<void>;
8
8
  private selectNextId;
9
+ delete(id: number): Promise<void>;
9
10
  private bindParameters;
10
11
  }
@@ -26,6 +26,11 @@ export default class PersonalDataTable extends Table {
26
26
  const result = await query.execute();
27
27
  return result.getValue();
28
28
  }
29
+ async delete(id) {
30
+ const query = this.createQuery(SQL.personalData.delete);
31
+ query.bindParameter('id', id);
32
+ await query.execute();
33
+ }
29
34
  bindParameters(query, personalData) {
30
35
  query.bindParameter('email', personalData.getEmail());
31
36
  query.bindParameter('first_name', personalData.getFirstName());
@@ -0,0 +1,6 @@
1
+ import AddressI from "./AddressI";
2
+ export default interface AccountAddressesI {
3
+ id: number;
4
+ accountId: number;
5
+ address: AddressI;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -8,6 +8,7 @@ export default interface OrderI {
8
8
  deliveryDetailsId: number;
9
9
  companyDetailsId: number;
10
10
  paymentDetailsId: number;
11
+ invoice: boolean;
11
12
  zsiId: number;
12
13
  status: StatusI;
13
14
  }
@@ -0,0 +1,5 @@
1
+ export default interface AccountAddressesRow {
2
+ id: number;
3
+ account_id: number;
4
+ address_id: number;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -7,6 +7,7 @@ export default interface OrderRow {
7
7
  delivery_details_id: number;
8
8
  company_details_id: number;
9
9
  payment_details_id: number;
10
+ invoice: boolean;
10
11
  zsi_id: number;
11
12
  status_id: number;
12
13
  status_name: string;
@@ -0,0 +1 @@
1
+ export default function calculateNetToGrossPrice(netPrice: number, vatPercentage: number): number;
@@ -0,0 +1,7 @@
1
+ export default function calculateNetToGrossPrice(netPrice, vatPercentage) {
2
+ const netPriceInPenny = Math.round(netPrice * 100);
3
+ const vatPriceInPenny = Math.round((netPriceInPenny * vatPercentage) / 100);
4
+ const grossPriceInPenny = netPriceInPenny + vatPriceInPenny;
5
+ const grossPrice = (grossPriceInPenny / 100).toFixed(2);
6
+ return Number(grossPrice);
7
+ }
@@ -0,0 +1,2 @@
1
+ import ProductI from "../types/ProductI";
2
+ export default function getTentInstallationPrice(productData: ProductI): Promise<number>;
@@ -0,0 +1,14 @@
1
+ import { TentInstallation } from "@dascompany/zsi";
2
+ export default async function getTentInstallationPrice(productData) {
3
+ const constructionSplit = productData.jsonData.construction.type.split(' ');
4
+ const tentData = {
5
+ construction: constructionSplit[0],
6
+ reinforcement: constructionSplit[1].toUpperCase() === 'POLAR',
7
+ fireResistant: (productData.jsonData.cover.type === 'PVC - 600g' || productData.jsonData.cover.type === 'PVC - 620g'),
8
+ width: productData.width,
9
+ length: productData.length,
10
+ height: productData.height
11
+ };
12
+ const installationPrice = await TentInstallation.getPrice(tentData);
13
+ return installationPrice;
14
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dascompany/product",
3
- "version": "3.1.4",
3
+ "version": "3.1.6",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "vitest",