use crate::com::{FromDispatch, FromDispatchNew, SafeDispatch, SafeVariant};
use crate::errors::SageResult;
use windows::Win32::System::Com::IDispatch;
pub struct Adresse {
pub dispatch: IDispatch,
}
impl Adresse {
fn dispatch(&self) -> SafeDispatch<'_> {
SafeDispatch::new(&self.dispatch)
}
pub fn a_numero(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("A_Numero", &[])?
.to_i32()
}
pub fn a_tiers(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_Tiers", &[])?
.to_string()
}
pub fn set_a_tiers(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch().call_property_put("A_Tiers", &[param])?;
Ok(())
}
pub fn a_type(&self) -> SageResult<i32> {
self.dispatch().call_method_by_name("A_Type", &[])?.to_i32()
}
pub fn set_a_type(&self, value: i32) -> SageResult<()> {
let param = SafeVariant::from_i32(value);
self.dispatch().call_property_put("A_Type", &[param])?;
Ok(())
}
pub fn a_intitule(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_Intitule", &[])?
.to_string()
}
pub fn set_a_intitule(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch().call_property_put("A_Intitule", &[param])?;
Ok(())
}
pub fn a_adresse(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_Adresse", &[])?
.to_string()
}
pub fn set_a_adresse(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch().call_property_put("A_Adresse", &[param])?;
Ok(())
}
pub fn a_complement(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_Complement", &[])?
.to_string()
}
pub fn set_a_complement(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch()
.call_property_put("A_Complement", &[param])?;
Ok(())
}
pub fn a_code_postal(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_CodePostal", &[])?
.to_string()
}
pub fn set_a_code_postal(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch()
.call_property_put("A_CodePostal", &[param])?;
Ok(())
}
pub fn a_ville(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_Ville", &[])?
.to_string()
}
pub fn set_a_ville(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch().call_property_put("A_Ville", &[param])?;
Ok(())
}
pub fn a_region(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_Region", &[])?
.to_string()
}
pub fn set_a_region(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch().call_property_put("A_Region", &[param])?;
Ok(())
}
pub fn a_pays(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_Pays", &[])?
.to_string()
}
pub fn set_a_pays(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch().call_property_put("A_Pays", &[param])?;
Ok(())
}
pub fn a_contact(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_Contact", &[])?
.to_string()
}
pub fn set_a_contact(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch().call_property_put("A_Contact", &[param])?;
Ok(())
}
pub fn a_telephone(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_Telephone", &[])?
.to_string()
}
pub fn set_a_telephone(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch().call_property_put("A_Telephone", &[param])?;
Ok(())
}
pub fn a_telecopie(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_Telecopie", &[])?
.to_string()
}
pub fn set_a_telecopie(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch().call_property_put("A_Telecopie", &[param])?;
Ok(())
}
pub fn a_email(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_Email", &[])?
.to_string()
}
pub fn set_a_email(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch().call_property_put("A_Email", &[param])?;
Ok(())
}
pub fn a_site_web(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("A_SiteWeb", &[])?
.to_string()
}
pub fn set_a_site_web(&self, value: &str) -> SageResult<()> {
let param = SafeVariant::from_string(value);
self.dispatch().call_property_put("A_SiteWeb", &[param])?;
Ok(())
}
pub fn a_principal(&self) -> SageResult<bool> {
self.dispatch()
.call_method_by_name("A_Principal", &[])?
.to_bool()
}
pub fn set_a_principal(&self, value: bool) -> SageResult<()> {
let param = SafeVariant::from_bool(value);
self.dispatch().call_property_put("A_Principal", &[param])?;
Ok(())
}
pub fn a_expedition(&self) -> SageResult<bool> {
self.dispatch()
.call_method_by_name("A_Expedition", &[])?
.to_bool()
}
pub fn set_a_expedition(&self, value: bool) -> SageResult<()> {
let param = SafeVariant::from_bool(value);
self.dispatch()
.call_property_put("A_Expedition", &[param])?;
Ok(())
}
pub fn write(&self) -> SageResult<()> {
self.dispatch().call_method_by_name("Write", &[])?;
Ok(())
}
pub fn read(&self) -> SageResult<SafeVariant> {
self.dispatch().call_method_by_name("Read", &[])
}
pub fn remove(&self) -> SageResult<()> {
self.dispatch().call_method_by_name("Remove", &[])?;
Ok(())
}
pub fn description(&self) -> SageResult<String> {
let type_val = self.a_type()?;
let ville = self.a_ville()?;
let type_str = match type_val {
0 => "Principale",
1 => "Livraison",
2 => "Facturation",
_ => "Autre",
};
Ok(format!("Adresse {} - {}", type_str, ville))
}
pub fn adresse_complete(&self) -> SageResult<String> {
let adresse = self.a_adresse()?;
let complement = self.a_complement().unwrap_or_else(|_| String::new());
let code_postal = self.a_code_postal()?;
let ville = self.a_ville()?;
let pays = self.a_pays().unwrap_or_else(|_| String::new());
let mut result = adresse.clone();
if !complement.is_empty() {
result.push('\n');
result.push_str(&complement);
}
result.push_str(&format!("\n{} {}", code_postal, ville));
if !pays.is_empty() {
result.push_str(&format!("\n{}", pays));
}
Ok(result)
}
}
impl FromDispatch for Adresse {
fn from_dispatch(dispatch: IDispatch) -> SageResult<Self> {
Ok(Adresse { dispatch })
}
}
impl FromDispatchNew for Adresse {
fn from_dispatch_new(dispatch: IDispatch) -> SageResult<Self> {
Ok(Self { dispatch })
}
}
#[cfg(test)]
mod tests {
#[test]
fn test_adresse_documentation() {
}
}