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