Purchase orders

This commit is contained in:
Hillel Coren 2022-06-26 12:08:44 +03:00
parent 6be1041f7a
commit c89ac2dd0d
3 changed files with 27 additions and 26 deletions

View File

@ -43,10 +43,10 @@ class PurchaseOrderFields {
static const String autoBillEnabled = 'auto_bill_enabled'; static const String autoBillEnabled = 'auto_bill_enabled';
static const String contactName = 'contact_name'; static const String contactName = 'contact_name';
static const String contactEmail = 'contact_email'; static const String contactEmail = 'contact_email';
static const String clientCity = 'client_city'; static const String vendorCity = 'vendor_city';
static const String clientState = 'client_state'; static const String vendorState = 'vendor_state';
static const String clientPostalCode = 'client_postal_code'; static const String vendorPostalCode = 'vendor_postal_code';
static const String clientCountry = 'client_country'; static const String vendorCountry = 'vendor_country';
static const String quote = 'quote'; static const String quote = 'quote';
static const String recurringInvoice = 'recurring_invoice'; static const String recurringInvoice = 'recurring_invoice';
} }

View File

@ -6,20 +6,20 @@ import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart';
ClientEntity purchaseOrderClientSelector( VendorEntity purchaseOrderClientSelector(
InvoiceEntity purchaseOrder, BuiltMap<String, ClientEntity> clientMap) { InvoiceEntity purchaseOrder, BuiltMap<String, VendorEntity> vendorMap) {
return clientMap[purchaseOrder.clientId]; return vendorMap[purchaseOrder.vendorId];
} }
ClientContactEntity purchaseOrderContactSelector( VendorContactEntity purchaseOrderContactSelector(
InvoiceEntity purchaseOrder, ClientEntity client) { InvoiceEntity purchaseOrder, VendorEntity vendor) {
var contactIds = purchaseOrder.invitations var contactIds = purchaseOrder.invitations
.map((invitation) => invitation.clientContactId) .map((invitation) => invitation.clientContactId)
.toList(); .toList();
if (contactIds.contains(client.primaryContact.id)) { if (contactIds.contains(vendor.primaryContact.id)) {
contactIds = [client.primaryContact.id]; contactIds = [vendor.primaryContact.id];
} }
return client.contacts return vendor.contacts
.firstWhere((contact) => contactIds.contains(contact.id), orElse: null); .firstWhere((contact) => contactIds.contains(contact.id), orElse: null);
} }

View File

@ -22,7 +22,7 @@ class PurchaseOrderPresenter extends EntityPresenter {
return [ return [
PurchaseOrderFields.status, PurchaseOrderFields.status,
PurchaseOrderFields.number, PurchaseOrderFields.number,
PurchaseOrderFields.client, PurchaseOrderFields.vendor,
PurchaseOrderFields.amount, PurchaseOrderFields.amount,
PurchaseOrderFields.date, PurchaseOrderFields.date,
PurchaseOrderFields.validUntil, PurchaseOrderFields.validUntil,
@ -47,13 +47,13 @@ class PurchaseOrderPresenter extends EntityPresenter {
PurchaseOrderFields.isViewed, PurchaseOrderFields.isViewed,
PurchaseOrderFields.lastSentDate, PurchaseOrderFields.lastSentDate,
PurchaseOrderFields.project, PurchaseOrderFields.project,
PurchaseOrderFields.vendor, PurchaseOrderFields.client,
PurchaseOrderFields.contactName, PurchaseOrderFields.contactName,
PurchaseOrderFields.contactEmail, PurchaseOrderFields.contactEmail,
PurchaseOrderFields.clientState, PurchaseOrderFields.vendorState,
PurchaseOrderFields.clientCity, PurchaseOrderFields.vendorCity,
PurchaseOrderFields.clientPostalCode, PurchaseOrderFields.vendorPostalCode,
PurchaseOrderFields.clientCountry, PurchaseOrderFields.vendorCountry,
PurchaseOrderFields.partial, PurchaseOrderFields.partial,
PurchaseOrderFields.partialDueDate, PurchaseOrderFields.partialDueDate,
]; ];
@ -65,6 +65,7 @@ class PurchaseOrderPresenter extends EntityPresenter {
final state = StoreProvider.of<AppState>(context).state; final state = StoreProvider.of<AppState>(context).state;
final purchaseOrder = entity as InvoiceEntity; final purchaseOrder = entity as InvoiceEntity;
final client = state.clientState.get(purchaseOrder.clientId); final client = state.clientState.get(purchaseOrder.clientId);
final vendor = state.vendorState.get(purchaseOrder.vendorId);
switch (field) { switch (field) {
case PurchaseOrderFields.status: case PurchaseOrderFields.status:
@ -125,18 +126,18 @@ class PurchaseOrderPresenter extends EntityPresenter {
case PurchaseOrderFields.vendor: case PurchaseOrderFields.vendor:
final vendor = state.vendorState.get(purchaseOrder.vendorId); final vendor = state.vendorState.get(purchaseOrder.vendorId);
return LinkTextRelatedEntity(entity: vendor, relation: purchaseOrder); return LinkTextRelatedEntity(entity: vendor, relation: purchaseOrder);
case PurchaseOrderFields.clientState: case PurchaseOrderFields.vendorState:
return Text(client.state); return Text(vendor.state);
case PurchaseOrderFields.clientCity: case PurchaseOrderFields.vendorCity:
return Text(client.city); return Text(vendor.city);
case PurchaseOrderFields.clientPostalCode: case PurchaseOrderFields.vendorPostalCode:
return Text(client.postalCode); return Text(vendor.postalCode);
case PurchaseOrderFields.clientCountry: case PurchaseOrderFields.vendorCountry:
return Text(state.staticState.countryMap[client.countryId]?.name ?? ''); return Text(state.staticState.countryMap[client.countryId]?.name ?? '');
case PurchaseOrderFields.contactName: case PurchaseOrderFields.contactName:
case PurchaseOrderFields.contactEmail: case PurchaseOrderFields.contactEmail:
final contact = purchaseOrderContactSelector( final contact = purchaseOrderContactSelector(
purchaseOrder, state.clientState.get(purchaseOrder.clientId)); purchaseOrder, state.vendorState.get(purchaseOrder.vendorId));
if (contact == null) { if (contact == null) {
return SizedBox(); return SizedBox();
} }