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 contactName = 'contact_name';
static const String contactEmail = 'contact_email';
static const String clientCity = 'client_city';
static const String clientState = 'client_state';
static const String clientPostalCode = 'client_postal_code';
static const String clientCountry = 'client_country';
static const String vendorCity = 'vendor_city';
static const String vendorState = 'vendor_state';
static const String vendorPostalCode = 'vendor_postal_code';
static const String vendorCountry = 'vendor_country';
static const String quote = 'quote';
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/redux/ui/list_ui_state.dart';
ClientEntity purchaseOrderClientSelector(
InvoiceEntity purchaseOrder, BuiltMap<String, ClientEntity> clientMap) {
return clientMap[purchaseOrder.clientId];
VendorEntity purchaseOrderClientSelector(
InvoiceEntity purchaseOrder, BuiltMap<String, VendorEntity> vendorMap) {
return vendorMap[purchaseOrder.vendorId];
}
ClientContactEntity purchaseOrderContactSelector(
InvoiceEntity purchaseOrder, ClientEntity client) {
VendorContactEntity purchaseOrderContactSelector(
InvoiceEntity purchaseOrder, VendorEntity vendor) {
var contactIds = purchaseOrder.invitations
.map((invitation) => invitation.clientContactId)
.toList();
if (contactIds.contains(client.primaryContact.id)) {
contactIds = [client.primaryContact.id];
if (contactIds.contains(vendor.primaryContact.id)) {
contactIds = [vendor.primaryContact.id];
}
return client.contacts
return vendor.contacts
.firstWhere((contact) => contactIds.contains(contact.id), orElse: null);
}

View File

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