datasynth_core/models/sourcing/
bid.rs1use chrono::NaiveDate;
4use rust_decimal::Decimal;
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, Default)]
9#[serde(rename_all = "snake_case")]
10pub enum BidStatus {
11 #[default]
13 Submitted,
14 UnderEvaluation,
16 Accepted,
18 Rejected,
20 Withdrawn,
22 Disqualified,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct BidLineItem {
29 pub item_number: u16,
31 #[serde(with = "rust_decimal::serde::str")]
33 pub unit_price: Decimal,
34 pub quantity: Decimal,
36 #[serde(with = "rust_decimal::serde::str")]
38 pub total_amount: Decimal,
39 pub lead_time_days: u32,
41 pub notes: Option<String>,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
47pub struct SupplierBid {
48 pub bid_id: String,
50 pub rfx_id: String,
52 pub vendor_id: String,
54 pub company_code: String,
56 pub status: BidStatus,
58 pub submission_date: NaiveDate,
60 pub line_items: Vec<BidLineItem>,
62 #[serde(with = "rust_decimal::serde::str")]
64 pub total_amount: Decimal,
65 pub validity_days: u32,
67 pub payment_terms: String,
69 pub delivery_terms: Option<String>,
71 pub technical_summary: Option<String>,
73 pub is_on_time: bool,
75 pub is_compliant: bool,
77}