use crate::newtypes::Cents;
#[derive(Debug, Clone, Default, PartialEq, Eq)]
#[non_exhaustive]
pub struct IcmsTotals {
pub v_bc: Cents,
pub v_icms: Cents,
pub v_icms_deson: Cents,
pub v_bc_st: Cents,
pub v_st: Cents,
pub v_fcp: Cents,
pub v_fcp_st: Cents,
pub v_fcp_st_ret: Cents,
pub v_fcp_uf_dest: Cents,
pub v_icms_uf_dest: Cents,
pub v_icms_uf_remet: Cents,
pub q_bc_mono: i64,
pub v_icms_mono: Cents,
pub q_bc_mono_reten: i64,
pub v_icms_mono_reten: Cents,
pub q_bc_mono_ret: i64,
pub v_icms_mono_ret: Cents,
pub ind_deduz_deson: bool,
}
impl IcmsTotals {
pub fn new() -> Self {
Self::default()
}
pub fn v_bc(mut self, v: Cents) -> Self {
self.v_bc = v;
self
}
pub fn v_icms(mut self, v: Cents) -> Self {
self.v_icms = v;
self
}
pub fn v_icms_deson(mut self, v: Cents) -> Self {
self.v_icms_deson = v;
self
}
pub fn v_bc_st(mut self, v: Cents) -> Self {
self.v_bc_st = v;
self
}
pub fn v_st(mut self, v: Cents) -> Self {
self.v_st = v;
self
}
pub fn v_fcp(mut self, v: Cents) -> Self {
self.v_fcp = v;
self
}
pub fn v_fcp_st(mut self, v: Cents) -> Self {
self.v_fcp_st = v;
self
}
pub fn v_fcp_st_ret(mut self, v: Cents) -> Self {
self.v_fcp_st_ret = v;
self
}
pub fn v_fcp_uf_dest(mut self, v: Cents) -> Self {
self.v_fcp_uf_dest = v;
self
}
pub fn v_icms_uf_dest(mut self, v: Cents) -> Self {
self.v_icms_uf_dest = v;
self
}
pub fn v_icms_uf_remet(mut self, v: Cents) -> Self {
self.v_icms_uf_remet = v;
self
}
pub fn v_icms_mono(mut self, v: Cents) -> Self {
self.v_icms_mono = v;
self
}
pub fn v_icms_mono_reten(mut self, v: Cents) -> Self {
self.v_icms_mono_reten = v;
self
}
pub fn v_icms_mono_ret(mut self, v: Cents) -> Self {
self.v_icms_mono_ret = v;
self
}
pub fn ind_deduz_deson(mut self, v: bool) -> Self {
self.ind_deduz_deson = v;
self
}
}
pub fn create_icms_totals() -> IcmsTotals {
IcmsTotals::default()
}
pub fn merge_icms_totals(target: &mut IcmsTotals, source: &IcmsTotals) {
target.v_bc += source.v_bc;
target.v_icms += source.v_icms;
target.v_icms_deson += source.v_icms_deson;
target.v_bc_st += source.v_bc_st;
target.v_st += source.v_st;
target.v_fcp += source.v_fcp;
target.v_fcp_st += source.v_fcp_st;
target.v_fcp_st_ret += source.v_fcp_st_ret;
target.v_fcp_uf_dest += source.v_fcp_uf_dest;
target.v_icms_uf_dest += source.v_icms_uf_dest;
target.v_icms_uf_remet += source.v_icms_uf_remet;
target.q_bc_mono += source.q_bc_mono;
target.v_icms_mono += source.v_icms_mono;
target.q_bc_mono_reten += source.q_bc_mono_reten;
target.v_icms_mono_reten += source.v_icms_mono_reten;
target.q_bc_mono_ret += source.q_bc_mono_ret;
target.v_icms_mono_ret += source.v_icms_mono_ret;
if source.ind_deduz_deson {
target.ind_deduz_deson = true;
}
}