mod cofins;
mod cofins_st;
mod icms;
mod icms_uf_dest;
mod ii;
mod ipi;
mod issqn;
mod pis;
mod pis_st;
pub use cofins::*;
pub use cofins_st::*;
pub use icms::*;
pub use icms_uf_dest::*;
pub use ii::*;
pub use ipi::*;
pub use issqn::*;
pub use pis::*;
pub use pis_st::*;
use super::Error;
use serde::{Deserialize, Serialize};
use std::str::FromStr;
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
#[serde(rename = "imposto")]
pub struct Imposto {
#[serde(rename = "$unflatten=vTotTrib")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_aproximado_tributos: Option<f32>,
#[serde(rename = "ICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms: Option<IcmsContainer>,
#[serde(rename = "IPI")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ipi: Option<IpiContainer>,
#[serde(rename = "II")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ii: Option<ImpostoImportacao>,
#[serde(rename = "PIS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub pis: Option<PisContainer>,
#[serde(rename = "PISST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub pis_st: Option<PisSt>,
#[serde(rename = "COFINS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cofins: Option<CofinsContainer>,
#[serde(rename = "COFINSST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cofins_st: Option<CofinsSt>,
#[serde(rename = "ISSQN")]
#[serde(skip_serializing_if = "Option::is_none")]
pub issqn: Option<Issqn>,
#[serde(rename = "ICMSUFDest")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms_uf_dest: Option<IcmsUfDest>,
}
impl FromStr for Imposto {
type Err = Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
quick_xml::de::from_str(s).map_err(|e| e.into())
}
}
impl ToString for Imposto {
fn to_string(&self) -> String {
quick_xml::se::to_string(self).expect("Falha ao serializar o imposto")
}
}
impl Default for Imposto {
fn default() -> Self {
Self {
valor_aproximado_tributos: None,
icms: None,
ipi: None,
ii: None,
pis: None,
pis_st: None,
cofins: None,
cofins_st: None,
issqn: None,
icms_uf_dest: None,
}
}
}