.
This commit is contained in:
parent
b9efe95289
commit
b45fd00358
@ -189,7 +189,10 @@ export class UpdateQuoteUseCase
|
||||
QuoteItem.create({
|
||||
articleId: item.article_id,
|
||||
description: Description.create(item.description).object,
|
||||
quantity: Quantity.create(item.quantity).object,
|
||||
quantity: Quantity.create({
|
||||
amount: item.quantity.amount,
|
||||
scale: item.quantity.scale,
|
||||
}).object,
|
||||
unitPrice: UnitPrice.create({
|
||||
amount: item.unit_price?.amount,
|
||||
currencyCode: item.unit_price?.currency_code,
|
||||
|
||||
@ -71,13 +71,17 @@ export class Quote extends AggregateRoot<IQuoteProps> implements IQuote {
|
||||
|
||||
protected _items: ICollection<QuoteItem>;
|
||||
|
||||
protected _calculateTotalPriceItems = (): MoneyValue =>
|
||||
this.props.items
|
||||
protected _calculateTotalPriceItems = (): MoneyValue => {
|
||||
const result = this.props.items
|
||||
.toArray()
|
||||
.reduce<MoneyValue>(
|
||||
(accumulator, currentItem) => accumulator.add(currentItem.subtotalPrice),
|
||||
MoneyValue.create({ amount: 0, scale: 2, currencyCode: this.currency.code }).object
|
||||
);
|
||||
(accumulator, currentItem) => accumulator.add(currentItem.totalPrice),
|
||||
MoneyValue.create({ amount: 0, scale: 4, currencyCode: this.currency.code }).object
|
||||
)
|
||||
.convertScale(2);
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
protected constructor(props: IQuoteProps, id?: UniqueID) {
|
||||
super(props, id);
|
||||
|
||||
@ -36,7 +36,7 @@ export const UpdateQuotePresenter: IUpdateQuotePresenter = {
|
||||
const quoteItemPresenter = (items: ICollection<QuoteItem>, context: ISalesContext) =>
|
||||
items.totalCount > 0
|
||||
? items.items.map((item: QuoteItem) => ({
|
||||
article_id: item.articleId,
|
||||
article_id: item.articleId ?? "",
|
||||
description: item.description.toString(),
|
||||
quantity: item.quantity.toObject(),
|
||||
unit_price: item.unitPrice.toObject(),
|
||||
|
||||
@ -64,7 +64,7 @@ class QuoteMapper
|
||||
discount: this.mapsValue(source, "discount", (discount) =>
|
||||
Percentage.create({
|
||||
amount: discount,
|
||||
scale: Percentage.DEFAULT_SCALE,
|
||||
scale: 2,
|
||||
})
|
||||
),
|
||||
|
||||
@ -106,9 +106,9 @@ class QuoteMapper
|
||||
payment_method: source.paymentMethod.toPrimitive(),
|
||||
notes: source.notes.toPrimitive(),
|
||||
|
||||
subtotal_price: source.subtotalPrice.toPrimitive(),
|
||||
discount: source.discount.toPrimitive(),
|
||||
total_price: source.totalPrice.toPrimitive(),
|
||||
subtotal_price: source.subtotalPrice.convertScale(2).toPrimitive(),
|
||||
discount: source.discount.convertScale(2).toPrimitive(),
|
||||
total_price: source.totalPrice.convertScale(2).toPrimitive(),
|
||||
|
||||
items,
|
||||
dealer_id: source.dealerId.toPrimitive(),
|
||||
|
||||
@ -28,7 +28,7 @@ class QuoteItemMapper
|
||||
quantity: this.mapsValue(source, "quantity", (quantity) =>
|
||||
Quantity.create({
|
||||
amount: quantity,
|
||||
scale: Quantity.DEFAULT_SCALE,
|
||||
scale: 2,
|
||||
})
|
||||
),
|
||||
unitPrice: this.mapsValue(source, "unit_price", (unit_price) =>
|
||||
@ -51,7 +51,7 @@ class QuoteItemMapper
|
||||
discount: this.mapsValue(source, "discount", (discount) =>
|
||||
Percentage.create({
|
||||
amount: discount,
|
||||
scale: Percentage.DEFAULT_SCALE,
|
||||
scale: 2,
|
||||
})
|
||||
),
|
||||
|
||||
@ -59,7 +59,7 @@ class QuoteItemMapper
|
||||
MoneyValue.create({
|
||||
amount: total_price,
|
||||
currencyCode: sourceParent.currency_code,
|
||||
scale: 2,
|
||||
scale: 4,
|
||||
})
|
||||
),*/
|
||||
};
|
||||
@ -85,11 +85,11 @@ class QuoteItemMapper
|
||||
position: index,
|
||||
id_article: source.articleId,
|
||||
description: source.description.toPrimitive(),
|
||||
quantity: source.quantity.toPrimitive(),
|
||||
unit_price: source.unitPrice.toPrimitive(),
|
||||
subtotal_price: source.subtotalPrice.toPrimitive(),
|
||||
discount: source.discount.toPrimitive(),
|
||||
total_price: source.totalPrice.toPrimitive(),
|
||||
quantity: source.quantity.convertScale(2).toPrimitive(),
|
||||
unit_price: source.unitPrice.convertScale(4).toPrimitive(),
|
||||
subtotal_price: source.subtotalPrice.convertScale(4).toPrimitive(),
|
||||
discount: source.discount.convertScale(2).toPrimitive(),
|
||||
total_price: source.totalPrice.convertScale(4).toPrimitive(),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@ export class Quote_Model extends Model<
|
||||
declare validity: CreationOptional<string>;
|
||||
|
||||
declare subtotal_price: CreationOptional<number>;
|
||||
declare discount: CreationOptional<number>;
|
||||
declare discount: CreationOptional<number | null>;
|
||||
declare total_price: CreationOptional<number>;
|
||||
|
||||
declare items: NonAttribute<QuoteItem_Model[]>;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { config } from "@/config";
|
||||
import { IAdapter, Password, RepositoryBuilder } from "@/contexts/common/domain";
|
||||
import { Dealer, IDealerRepository } from "@/contexts/sales/domain";
|
||||
import { Email, Language, Name, UniqueID } from "@shared/contexts";
|
||||
import { Dealer, DealerStatus, IDealerRepository } from "@/contexts/sales/domain";
|
||||
import { CurrencyData, Email, KeyValueMap, Language, Name, UniqueID } from "@shared/contexts";
|
||||
import { IUserRepository, User, UserRole } from "../domain";
|
||||
|
||||
export const existsUserByID = async (
|
||||
@ -113,10 +113,22 @@ export const initializeSampleDealer = async (
|
||||
const dealerExists = await repository({ transaction: t }).getByUserId(user.id);
|
||||
|
||||
if (!dealerExists) {
|
||||
const additionalInfoOrError = KeyValueMap.create([
|
||||
["contact_information", ""],
|
||||
["default_payment_method", ""],
|
||||
["default_notes", ""],
|
||||
["default_legal_terms", ""],
|
||||
["default_quote_validity", ""],
|
||||
]);
|
||||
|
||||
const dealer = Dealer.create(
|
||||
{
|
||||
name: Name.create(config.sample_dealer.name).object,
|
||||
user_id: user.id,
|
||||
language: Language.createDefaultCode().object,
|
||||
status: DealerStatus.createActive(),
|
||||
currency: CurrencyData.createDefaultCode().object,
|
||||
additionalInfo: additionalInfoOrError.object,
|
||||
},
|
||||
UniqueID.generateNewID().object
|
||||
).object;
|
||||
|
||||
@ -229,7 +229,7 @@ export class MoneyValue extends ValueObject<Dinero> implements IMoneyValue {
|
||||
return this.props.getPrecision();
|
||||
}
|
||||
|
||||
public convertScale(newScale: number, roundingMode?: RoundingMode): MoneyValue {
|
||||
public convertScale(newScale: number, roundingMode: RoundingMode = "HALF_UP"): MoneyValue {
|
||||
return MoneyValue.createFromDinero(this.props.convertPrecision(newScale, roundingMode)).object;
|
||||
}
|
||||
|
||||
|
||||
@ -180,8 +180,12 @@ export class Quantity extends NullableValueObject<IQuantity> {
|
||||
return this.isNull() ? "" : String(this.toNumber());
|
||||
}
|
||||
|
||||
public toPrimitive(): number {
|
||||
return this.toNumber();
|
||||
public toPrimitive(): NullOr<number> {
|
||||
if (this.scale !== Quantity.DEFAULT_SCALE) {
|
||||
return this.convertScale(Quantity.DEFAULT_SCALE).toPrimitive();
|
||||
} else {
|
||||
return this.amount;
|
||||
}
|
||||
}
|
||||
|
||||
public toPrimitives() {
|
||||
|
||||
@ -16,9 +16,9 @@ export interface IUpdateQuote_Response_DTO {
|
||||
notes: string;
|
||||
validity: string;
|
||||
|
||||
subtotal: IMoney_Response_DTO;
|
||||
subtotal_price: IMoney_Response_DTO;
|
||||
discount: IPercentage_Response_DTO;
|
||||
total: IMoney_Response_DTO;
|
||||
total_price: IMoney_Response_DTO;
|
||||
|
||||
items: IUpdateQuote_QuoteItem_Response_DTO[];
|
||||
|
||||
@ -30,7 +30,7 @@ export interface IUpdateQuote_QuoteItem_Response_DTO {
|
||||
quantity: IQuantity_Response_DTO;
|
||||
description: string;
|
||||
unit_price: IMoney_Response_DTO;
|
||||
price: IMoney_Response_DTO;
|
||||
subtotal_price: IMoney_Response_DTO;
|
||||
discount: IPercentage_Response_DTO;
|
||||
total_price: IMoney_Response_DTO;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user