From 3d7a309aaba158b0381a40c5355c0c05ad73103e Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 23 Jun 2022 18:32:31 +0300 Subject: [PATCH] Purchase orders --- lib/data/models/invoice_model.dart | 16 +++++++++++----- lib/data/models/vendor_model.dart | 4 ++++ lib/redux/vendor/vendor_actions.dart | 10 ++++++++++ lib/utils/icons.dart | 1 + 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/lib/data/models/invoice_model.dart b/lib/data/models/invoice_model.dart index 1236d8f10..d5bae7bb7 100644 --- a/lib/data/models/invoice_model.dart +++ b/lib/data/models/invoice_model.dart @@ -133,6 +133,7 @@ abstract class InvoiceEntity extends Object String id, AppState state, ClientEntity client, + VendorEntity vendor, UserEntity user, EntityType entityType, }) { @@ -161,7 +162,7 @@ abstract class InvoiceEntity extends Object taxAmount: 0, poNumber: '', projectId: '', - vendorId: '', + vendorId: vendor?.id ?? '', date: convertDateTimeToSqlDate(), dueDate: '', publicNotes: '', @@ -211,11 +212,16 @@ abstract class InvoiceEntity extends Object usesInclusiveTaxes: company?.settings?.enableInclusiveTaxes ?? false, documents: BuiltList(), activities: BuiltList(), - invitations: client == null - ? BuiltList() - : BuiltList(client.emailContacts + invitations: client != null + ? BuiltList(client.emailContacts .map((contact) => InvitationEntity(clientContactId: contact.id)) - .toList()), + .toList()) + : vendor != null + ? BuiltList(vendor.emailContacts + .map((contact) => + InvitationEntity(vendorContactId: contact.id)) + .toList()) + : BuiltList(), updatedAt: 0, archivedAt: 0, isDeleted: false, diff --git a/lib/data/models/vendor_model.dart b/lib/data/models/vendor_model.dart index ec9b03e5a..266dad40e 100644 --- a/lib/data/models/vendor_model.dart +++ b/lib/data/models/vendor_model.dart @@ -203,6 +203,10 @@ abstract class VendorEntity extends Object actions.add(EntityAction.edit); } + if (userCompany.canCreate(EntityType.purchaseOrder)) { + actions.add(EntityAction.newPurchaseOrder); + } + if (userCompany.canCreate(EntityType.expense)) { actions.add(EntityAction.newExpense); } diff --git a/lib/redux/vendor/vendor_actions.dart b/lib/redux/vendor/vendor_actions.dart index 2bcf3b546..2bb73e55b 100644 --- a/lib/redux/vendor/vendor_actions.dart +++ b/lib/redux/vendor/vendor_actions.dart @@ -288,6 +288,16 @@ void handleVendorAction( case EntityAction.edit: editEntity(entity: vendor); break; + case EntityAction.newPurchaseOrder: + createEntity( + context: context, + entity: InvoiceEntity( + state: state, + vendor: vendor, + entityType: EntityType.purchaseOrder, + ), + ); + break; case EntityAction.newExpense: createEntity( context: context, diff --git a/lib/utils/icons.dart b/lib/utils/icons.dart index d8605e232..ade31c4fc 100644 --- a/lib/utils/icons.dart +++ b/lib/utils/icons.dart @@ -69,6 +69,7 @@ IconData getEntityActionIcon(EntityAction entityAction) { case EntityAction.newRecurringInvoice: case EntityAction.newRecurringQuote: case EntityAction.newRecurringExpense: + case EntityAction.newPurchaseOrder: case EntityAction.invoiceTask: case EntityAction.invoiceExpense: case EntityAction.invoiceProject: