pub struct ProtoInvoiceInfo<Period>where
Period: IsPeriod,{ /* private fields */ }Expand description
Partial information about the invoice which can be used to derive a InvoiceInfoFull
Implementations§
Source§impl<Period> ProtoInvoiceInfo<Period>where
Period: IsPeriod,
impl<Period> ProtoInvoiceInfo<Period>where
Period: IsPeriod,
Sourcepub fn builder() -> ProtoInvoiceInfoBuilder<Period>
pub fn builder() -> ProtoInvoiceInfoBuilder<Period>
Create an instance of ProtoInvoiceInfo using the builder syntax
Source§impl<Period> ProtoInvoiceInfo<Period>where
Period: IsPeriod,
impl<Period> ProtoInvoiceInfo<Period>where
Period: IsPeriod,
Sourcepub fn offset(&self) -> &TimestampedInvoiceNumber<Period>
pub fn offset(&self) -> &TimestampedInvoiceNumber<Period>
An offset which is used to calculate the invoice number, e.g. (237, 2025-05).
This is enables us to calculate the next invoice number based on the current
date and this offset.
Sourcepub fn record_of_periods_off(&self) -> &RecordOfPeriodsOff<Period>
pub fn record_of_periods_off(&self) -> &RecordOfPeriodsOff<Period>
Record of periods when we were 100% off, i.e. did not invoice for, e.g. ["2025-01", "2025-02"].
Sourcepub fn purchase_order(&self) -> &Option<PurchaseOrder>
pub fn purchase_order(&self) -> &Option<PurchaseOrder>
A purchase order number associated with this invoice, e.g. "PO-12345"
Typically agreed upon between the vendor and client before the
invoice is issued.
E.g. “Reverse VAT according to chapter 1 2§ first section 4b in the VAT regulation.”
Sourcepub fn emphasize_color_hex(&self) -> &Option<HexColor>
pub fn emphasize_color_hex(&self) -> &Option<HexColor>
Hex color code for the color emphasis of the invoice, e.g. "#e6007a".
Source§impl<Period> ProtoInvoiceInfo<Period>where
Period: IsPeriod,
impl<Period> ProtoInvoiceInfo<Period>where
Period: IsPeriod,
Sourcepub fn set_record_of_periods_off(
&mut self,
val: RecordOfPeriodsOff<Period>,
) -> &mut ProtoInvoiceInfo<Period>
pub fn set_record_of_periods_off( &mut self, val: RecordOfPeriodsOff<Period>, ) -> &mut ProtoInvoiceInfo<Period>
Record of periods when we were 100% off, i.e. did not invoice for, e.g. ["2025-01", "2025-02"].
Source§impl<Period> ProtoInvoiceInfo<Period>where
Period: IsPeriod,
impl<Period> ProtoInvoiceInfo<Period>where
Period: IsPeriod,
Sourcepub fn insert_period_off(&mut self, period: Period)
pub fn insert_period_off(&mut self, period: Period)
Inserts a new month into the months off record. This is used to keep track of months when no invoices were issued.
§Examples
extern crate klirr_core;
use klirr_core::prelude::*;
let mut invoice_info = ProtoInvoiceInfo::<YearAndMonth>::sample();
let month = YearAndMonth::may(2025);
invoice_info.insert_period_off(month);
assert!(invoice_info.record_of_periods_off().contains(&month));Source§impl<Period> ProtoInvoiceInfo<Period>where
Period: IsPeriod,
impl<Period> ProtoInvoiceInfo<Period>where
Period: IsPeriod,
Sourcepub fn validate(&self) -> Result<(), Error>
pub fn validate(&self) -> Result<(), Error>
Validates the invoice information, ensuring that the offset month is not in the record of months off.
§Examples
extern crate klirr_core;
use klirr_core::prelude::*;
let invoice_info = ProtoInvoiceInfo::<YearAndMonth>::sample();
assert!(invoice_info.validate().is_ok());Trait Implementations§
Source§impl<Period> Clone for ProtoInvoiceInfo<Period>
impl<Period> Clone for ProtoInvoiceInfo<Period>
Source§fn clone(&self) -> ProtoInvoiceInfo<Period>
fn clone(&self) -> ProtoInvoiceInfo<Period>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<Period> Debug for ProtoInvoiceInfo<Period>
impl<Period> Debug for ProtoInvoiceInfo<Period>
Source§impl<'de, Period> Deserialize<'de> for ProtoInvoiceInfo<Period>where
Period: IsPeriod + Deserialize<'de>,
impl<'de, Period> Deserialize<'de> for ProtoInvoiceInfo<Period>where
Period: IsPeriod + Deserialize<'de>,
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ProtoInvoiceInfo<Period>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ProtoInvoiceInfo<Period>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl<Period> HasSample for ProtoInvoiceInfo<Period>
impl<Period> HasSample for ProtoInvoiceInfo<Period>
Source§fn sample() -> ProtoInvoiceInfo<Period>
fn sample() -> ProtoInvoiceInfo<Period>
fn sample_other() -> ProtoInvoiceInfo<Period>
Source§impl<Period> PartialEq for ProtoInvoiceInfo<Period>
impl<Period> PartialEq for ProtoInvoiceInfo<Period>
Source§fn eq(&self, other: &ProtoInvoiceInfo<Period>) -> bool
fn eq(&self, other: &ProtoInvoiceInfo<Period>) -> bool
self and other values to be equal, and is used by ==.Source§impl<Period> Serialize for ProtoInvoiceInfo<Period>
impl<Period> Serialize for ProtoInvoiceInfo<Period>
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl<Period> StructuralPartialEq for ProtoInvoiceInfo<Period>where
Period: IsPeriod,
Auto Trait Implementations§
impl<Period> Freeze for ProtoInvoiceInfo<Period>where
Period: Freeze,
impl<Period> RefUnwindSafe for ProtoInvoiceInfo<Period>where
Period: RefUnwindSafe,
impl<Period> Send for ProtoInvoiceInfo<Period>where
Period: Send,
impl<Period> Sync for ProtoInvoiceInfo<Period>where
Period: Sync,
impl<Period> Unpin for ProtoInvoiceInfo<Period>where
Period: Unpin,
impl<Period> UnsafeUnpin for ProtoInvoiceInfo<Period>where
Period: UnsafeUnpin,
impl<Period> UnwindSafe for ProtoInvoiceInfo<Period>where
Period: UnwindSafe,
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Filterable for T
impl<T> Filterable for T
Source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.impl<T> MaybeSendSync for T
impl<T> OrderedContainer<T> for Twhere
T: Clone,
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more