2 using System.Collections.Generic;
3 using System.ComponentModel;
41 public dynamic _oEntidad = null;
46 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
47 [Category(
"Varios EW"),
48 DisplayName(
"Imagen del boton activo"),
50 Description(
"Obtiene o establece la imagen del botón cuando esta activo."),
53 public Image _Image_On
55 get {
return _iImage_On; }
56 set { _iImage_On = value; }
63 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
64 [Category(
"Varios EW"),
65 DisplayName(
"Imagen del boton inactivo"),
67 Description(
"Obtiene o establece la imagen del botón cuando esta inactivo."),
70 public Image _Image_Off
72 get {
return _iImage_Off; }
73 set { _iImage_Off = value; }
80 public Dictionary<string, string> _Users =
new Dictionary<string, string>() { };
85 public Dictionary<string, string> _Telephones =
new Dictionary<string, string>() { };
90 private Dictionary<string, TipoContacto> _ValidContacts
95 Dictionary<string, TipoContacto> llTotal =
new Dictionary<string, TipoContacto>();
96 if (this._Users != null)
98 foreach (var item
in this._Users)
100 lcKey = item.Key.Trim() + (
string.IsNullOrWhiteSpace(item.Value) ?
"" :
" (" + item.Value +
")");
101 if (!
string.IsNullOrWhiteSpace(item.Key) && !llTotal.ContainsKey(lcKey))
105 if (this._Telephones != null)
107 foreach (var item
in this._Telephones)
109 lcKey = item.Key.Trim() + (
string.IsNullOrWhiteSpace(item.Value) ?
"" :
" (" + item.Value +
")");
110 if (!
string.IsNullOrWhiteSpace(item.Key) && !llTotal.ContainsKey(lcKey))
111 llTotal.Add(lcKey, TipoContacto.Telephone);
118 private bool _lCleared =
false;
120 private string _lcPrefijoTelefonico =
"";
124 public string _PrefijoTelefonico
128 if (
string.IsNullOrWhiteSpace(_lcPrefijoTelefonico))
130 return this._lcPrefijoTelefonico;
140 this.BackgroundImageLayout = ImageLayout.Center;
143 ContextMenuStrip loMenu =
new ContextMenuStrip();
144 loMenu.Opened +=
new EventHandler(ContextMenuStrip_Click);
145 loMenu.Click +=
new EventHandler(ContextMenuStrip_Click);
146 loMenu.ItemClicked +=
new ToolStripItemClickedEventHandler(ContextMenuStrip_ItemClicked);
147 this.ContextMenuStrip = loMenu;
150 this.Click +=
new EventHandler(ewbtSkype_Click);
160 void ewbtSkype_Click(
object sender, EventArgs e)
163 this._RefreshDatos();
166 if (this._ValidContacts.Count > 0)
169 ToolStripMenuItem menuItem = null;
170 this.ContextMenuStrip.Items.Clear();
171 foreach (var item
in this._ValidContacts)
173 menuItem =
new ToolStripMenuItem();
174 menuItem.Text = item.Key;
180 this.ContextMenuStrip.Items.Add(menuItem);
182 Button btnSender = (Button)sender;
183 Point ptLowerLeft =
new Point(0, btnSender.Height);
184 ptLowerLeft = btnSender.PointToScreen(ptLowerLeft);
185 this.ContextMenuStrip.Show(ptLowerLeft);
189 FUNCTIONS._MessageBox(
"Debe haber declarado al menos un número de teléfono válido para realizar la llamada Skype.",
"Llamada Skype", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
197 private void _ShowSkype(
string tcContact =
"")
199 if (!
string.IsNullOrWhiteSpace(tcContact))
202 skype.SkypePlugin loSkype = skype.SkypePlugin.Instance;
203 loSkype._Call(tcContact);
206 this._GuardarLogLlamadaSkype(tcContact);
214 private void _GuardarLogLlamadaSkype(
string tcContact)
217 string lcValor =
string.Empty;
218 string lcCliente =
string.Empty;
219 string lcProveedor =
string.Empty;
221 lcValor = tcContact.Split(
'(')[0].Trim();
223 usuario.Usuario loUsuario = usuario.Usuario._This;
226 if (_oEntidad is cliente.Cliente)
227 lcCliente = _oEntidad._Codigo;
228 else if (_oEntidad is docscompra.Proveedor)
229 lcProveedor = _oEntidad._Codigo;
231 functions.FUNCTIONS.GuardarLogEnvioEmail(loUsuario._Codigo,
"", lcValor,
"", Convert.ToString(EW_GLOBAL._GetVariable(
"wc_empresa")), lcCliente, lcProveedor, tcTipo:
"Llamada por Skype");
234 void ContextMenuStrip_Click(
object sender, EventArgs e)
244 void ContextMenuStrip_ItemClicked(
object sender, ToolStripItemClickedEventArgs e)
246 string lcContact = e.ClickedItem.Text.ToString();
252 this._ShowSkype(lcContact);
256 if (lcContact.IndexOf(
'+') != 0)
257 lcContact = this._PrefijoTelefonico + lcContact;
259 this._ShowSkype(lcContact);
270 this._Telephones.Clear();
271 this._lCleared =
true;
279 if (this._oEntidad != null)
290 if (!
string.IsNullOrWhiteSpace(tmpProv._Skype))
292 if (!this._Users.ContainsKey(tmpProv._Skype))
293 this._Users.Add(tmpProv._Skype, tmpProv._Nombre);
297 if (!
string.IsNullOrWhiteSpace(item._Skype) && !this._Users.ContainsKey(item._Skype))
298 this._Users.Add(item._Skype, item._Persona.Trim());
304 if (!
string.IsNullOrWhiteSpace(item._Telefono) && !this._Telephones.ContainsKey(lcTemp))
305 this._Telephones.Add(tmpProv._PrefijoTelefonico + item._Telefono,
306 !
string.IsNullOrWhiteSpace(item._Persona) ? item._Persona.Trim() : tmpProv._Nombre);
314 if (!
string.IsNullOrWhiteSpace(tmpCli._Skype))
316 if (!this._Users.ContainsKey(tmpCli._Skype))
317 this._Users.Add(tmpCli._Skype, tmpCli._Nombre);
321 if (!
string.IsNullOrWhiteSpace(item._Skype) && !this._Users.ContainsKey(item._Skype))
322 this._Users.Add(item._Skype, item._Persona.Trim());
328 if (!
string.IsNullOrWhiteSpace(item._Telefono) && !this._Telephones.ContainsKey(lcTemp))
330 this._Telephones.Add(tmpCli._PrefijoTelefonico + item._Telefono,
331 !
string.IsNullOrWhiteSpace(item._Persona) ? item._Persona.Trim() : tmpCli._Nombre);
340 if (!
string.IsNullOrWhiteSpace(tmpFutCli._Mobil) && !this._Telephones.ContainsKey(tmpFutCli._Mobil))
341 this._Telephones.Add( tmpFutCli._Mobil,
"Móvil");
343 if (!
string.IsNullOrWhiteSpace(tmpFutCli._Telefono) && !
this._Telephones.ContainsKey(tmpFutCli._Telefono))
344 this._Telephones.Add(tmpFutCli._Telefono,
"Teléfono");
346 if (!
string.IsNullOrWhiteSpace(tmpFutCli._Fax) && !
this._Telephones.ContainsKey(tmpFutCli._Fax))
347 this._Telephones.Add(tmpFutCli._Fax,
"Fax");
350 this._lCleared =
false;
357 public virtual void _Refresh(dynamic toObject = null)
360 if (toObject != null && (this._oEntidad != toObject || this._lCleared))
362 this._oEntidad = toObject;
363 this._RefreshDatos();
366 if (this._ValidContacts.Count > 0)
368 this.BackgroundImage = this._Image_On;
373 this.BackgroundImage = this._Image_Off;
374 this.Enabled =
false;
Clase de negocio para Futuros Clientes
Definir la estructura de las líneas de contactos-teléfonos de clientes
static System.Drawing.Bitmap skype_32
Busca un recurso adaptado de tipo System.Drawing.Bitmap.
static System.Drawing.Bitmap telefono_16x16
Busca un recurso adaptado de tipo System.Drawing.Bitmap.
static System.Drawing.Bitmap user32_sage50_black
Busca un recurso adaptado de tipo System.Drawing.Bitmap.
static System.Drawing.Bitmap skype_gray_32
Busca un recurso adaptado de tipo System.Drawing.Bitmap.
Clase de recurso fuertemente tipado, para buscar cadenas traducidas, etc.
Clase de negocio Proveedor
TipoContacto
Tipo de contacto
Contactos y teléfonos de proveedores, clase de negocio de la nueva tabla GESTION!CONTLF_PRO resultado...
virtual void _Refresh(dynamic toObject=null)
Refresco del control
void _RefreshDatos()
Refrescar Datos
Clase para uso de funciones genéricas
string _PrefijoTelefonico
Prefijo telefonico del proveedor (según país).
void _Clear()
Borra todos los usuarios y telefonos asociados al botón
Definir la estructura de las líneas de contactos-teléfonos de proveedores
string _PrefijoTelefonico
Prefijo telefonico del cliente (según país)
Contactos y teléfonos de clientes, clase de negocio de la nueva tabla GESTION!CONTLF_CLI resultado de...
btSkype()
Constructor vacio