public void altaCliente(int num, string nom, string nomFant, string rut, string email, string dir, string dirCobro, string telefono, string fax, bool activo, DateTime? fecAlta, DateTime? fecBaja, string motivo, string referencia, string diaHoraCobro, string contactoCobro, string telefonosCobro, int diaInicioFacturacion, int diaFinFacturacion)
        {
            recargarContexto();

            ClientEs cliente = null;
            
            DbLinq.Data.Linq.Table<ClientEs> tablaCliente;
            try
            {
                tablaCliente = database.GetTable<ClientEs>();
            }
            catch (Exception ex)
            {
                WriteErrorLog(ex);
                throw ex;
            }

            try
            {
                
                cliente = new ClientEs();
                cliente.NumeroCliente = (uint)num;
                cliente.Nombre = nom;
                cliente.NombreFantasia = nomFant;
                cliente.Rut = rut;
                cliente.Email = email;
                cliente.Direccion = dir;
                cliente.DireccionDeCobro = dirCobro;
                cliente.Telefonos = telefono;
                cliente.DiaHoraCobro = diaHoraCobro;
                cliente.ContactoCobro = contactoCobro;
                cliente.TelefonosCobro = telefonosCobro;
                cliente.Referencia = referencia;
                cliente.Fax = fax;
                cliente.Referencia = referencia;
                cliente.FechaAlta = fecAlta;
                cliente.FechaBaja = fecBaja;
                cliente.MotivoBaja = motivo;
                cliente.DiaInicioFacturacion = (short)diaInicioFacturacion;
                cliente.DiaFinFacturacion = (short)diaFinFacturacion;
                if (activo)
                    cliente.Activo = 1;
                else
                    cliente.Activo = 0;

                tablaCliente.InsertOnSubmit(cliente);

                database.SubmitChanges();
            }
            catch (MySqlException ex)
            {
                //database.ClientEs.Remove
                throw ex;
            }



        }
 private void mtServicio_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyCode == Keys.Enter && mtServicio.Text != "")
     {
         try
         {
             //mtServicio.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;
             if (datos.existeClienteServicio(int.Parse(ucCliente.ClienteNRO),int.Parse(mtServicio.Text)))
             {                        
                 servicio = datos.obtenerServicioCliente(int.Parse(ucCliente.ClienteNRO), int.Parse(mtServicio.Text));
                 txtServicio.Text = servicio.Nombre;
                 cliente = datos.obtenerCliente(int.Parse(ucCliente.ClienteNRO));
                 cargarDatos();
                 SendKeys.Send("{ENTER}");
             }
             else
                 MessageBox.Show("No existe el servicio en el Cliente.","Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
         }
         catch (Exception ex)
         {
             MessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }
     if (e.KeyCode == Keys.F2)
     {
         // Abrir ventana de busqueda de servicios de ese cliente.
     }
 }
        private void ucCliente_cliPronto(object sender, EventArgs e)
        {
            //AgregarBTN.Enabled = false;
            //GuardarBTN.Enabled = false;
            //ContratoBTN.Enabled = false;

            AnteriorBTN.Visible = false;
            PosteriorBTN.Visible = false;

            if (ucCliente.find)
            {
                try
                {
                    //DateTime tmpFecha = DateTime.Now;
                    int numCli = int.Parse(ucCliente.ClienteNRO);
                    cliente = datos.obtenerCliente(numCli);
                    Cliente cli = sistema.obtenerCliente(numCli);
                    List<Servicio> servicios = cli.getListaServicios();
                    if (servicios.Count != 0)
                    {
                        cant = servicios.Count;
                        numerosSer = new int[cant];

                        int i = 0;
                        foreach (Servicio ser in servicios)
                        {
                            numerosSer[i] = ser.getNumero();
                            i++;
                        }
                        ind = 0;
                        servicio = datos.obtenerServicioCliente(numCli, numerosSer[ind]);
                        mtServicio.Text = numerosSer[ind].ToString();
                        txtServicio.Text = servicio.Nombre;

                        //mtFecha.Focus();
                        //MessageBox.Show(DateTime.Now.ToShortDateString());
                        //tmpFecha.Kind = DateTimeKind.Local;
                        //MessageBox.Show(tmpFecha.ToShortDateString());
                        //string temp = DateTime.Now.ToShortDateString();
                        //mtFecha.Text = temp;
                        SendKeys.Send("{ENTER}");

                        if (cant > 1)
                        {
                            AnteriorBTN.Visible = true;
                            PosteriorBTN.Visible = true;
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            //else
            //    MessageBox.Show("No existe el Cliente "+ucCliente.ClienteNRO, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        private Cliente convertClienteDatosToClienteLogica(ClientEs cliDatos)
        {
            List<SERVicIoS> cliServiciosDatos = datos.obtenerServiciosCliente((int)cliDatos.NumeroCliente);
            List<Servicio> listServs = new List<Servicio>();
            bool act;
            Servicio servicio;
            foreach(SERVicIoS ser in cliServiciosDatos)
            {
                servicio = convertServicioDatosToServicioLogica(ser);
                listServs.Add(servicio);
            }
            if (cliDatos.Activo == 1)
                act = true;
            else
                act = false;

            Cliente tdcli = new Cliente((int)cliDatos.NumeroCliente, cliDatos.Nombre, cliDatos.NombreFantasia, cliDatos.Rut, cliDatos.Email, cliDatos.Direccion, cliDatos.DireccionDeCobro, cliDatos.Telefonos, cliDatos.Fax, act, cliDatos.FechaAlta, cliDatos.FechaBaja, cliDatos.MotivoBaja, cliDatos.Referencia, cliDatos.DiaHoraCobro, cliDatos.ContactoCobro, cliDatos.TelefonosCobro, listServs,cliDatos.DiaInicioFacturacion,cliDatos.DiaFinFacturacion);
            
            return tdcli;
        }