partial void Deletedocumentacion(documentacion instance);
 partial void Updatedocumentacion(documentacion instance);
		private void detach_documentacions(documentacion entity)
		{
			this.SendPropertyChanging();
			entity.client = null;
		}
 partial void Insertdocumentacion(documentacion instance);
        public ActionResult Edit(client clientEdited)
        {
            user userSession = (user)Session["user"];

            if (Request.Files["documentacion_impositiva"] != null)
            {
                HttpPostedFileBase file = Request.Files["documentacion_impositiva"];
                if (file.ContentLength > 0)
                {
                    string fileName = DateTime.Now.Ticks.ToString() + "_" + Path.GetFileName(file.FileName);
                    string filePath = Path.Combine(HttpContext.Server.MapPath("/Uploads"), fileName);
                    file.SaveAs(filePath);
                    clientEdited.documentacion_impositiva = fileName;
                }
            }

            if (!(clientEdited.id > 0))
            {
                if (Request.Form["client_type"] == "entity")
                {
                    clientEdited.client_parent = null;
                }
                else
                {
                    clientEdited.client_parent = Convert.ToInt64(Request.Form["clientParent"]);
                }

                sql.clients.InsertOnSubmit(clientEdited);
            }
            else
            {
                var clientEdit = (from c in sql.clients
                                  where c.id == Convert.ToInt64(Request.Form["id"])
                                  select c).First();

                clientEdit.limite_credito = clientEdited.limite_credito;
                clientEdit.moneda = clientEdited.moneda;
                clientEdit.calle_nro = clientEdited.calle_nro;
                clientEdit.codigo_abc = clientEdited.codigo_abc;
                clientEdit.codigo_comision = clientEdited.codigo_comision;
                clientEdit.codigo_descuento = clientEdited.codigo_descuento;
                clientEdit.codigo_grupo1 = clientEdited.codigo_grupo1;
                clientEdit.codigo_grupo2 = clientEdited.codigo_grupo2;
                clientEdit.codigo_postal = clientEdited.codigo_postal;
                clientEdit.codigo_region = clientEdited.codigo_region;
                clientEdit.codigo_sucursal = clientEdited.codigo_sucursal;
                clientEdit.codigo_venta = clientEdited.codigo_venta;
                clientEdit.compania = clientEdited.compania;
                clientEdit.condicion_venta = clientEdited.condicion_venta;
                clientEdit.dias_credito = clientEdited.dias_credito;
                clientEdit.division = clientEdited.division;
                clientEdit.email_2_cobranzas = clientEdited.email_2_cobranzas;
                clientEdit.email_cobranzas = clientEdited.email_cobranzas;
                clientEdit.email_otro = clientEdited.email_otro;
                clientEdit.empresa_cobranza = clientEdited.empresa_cobranza;
                clientEdit.estado_cuenta = clientEdited.estado_cuenta;
                clientEdit.exento_impuestos = clientEdited.exento_impuestos;
                clientEdit.forma_pago = clientEdited.forma_pago;
                clientEdit.nro_consolidador = clientEdited.nro_consolidador;
                clientEdit.nro_cuit = clientEdited.nro_cuit;
                clientEdit.nro_iibb = clientEdited.nro_iibb;
                clientEdit.observacion_razon_social = clientEdited.observacion_razon_social;
                clientEdit.politica_falta_producto = clientEdited.politica_falta_producto;
                clientEdit.provincia = clientEdited.provincia;
                clientEdit.razon_social = clientEdited.razon_social;
                clientEdit.responsable_cuenta = clientEdited.responsable_cuenta;
                clientEdit.tax_code = clientEdited.tax_code;
                clientEdit.telefono = clientEdited.telefono;
                clientEdit.terms_code = clientEdited.terms_code;
                clientEdit.via_despacho = clientEdited.via_despacho;
                clientEdit.warehouse = clientEdited.warehouse;
                clientEdit.zona_reparto = clientEdited.zona_reparto;
                clientEdit.solicitante = clientEdited.solicitante;
                clientEdit.contacto_comercial = clientEdited.contacto_comercial;
                clientEdit.participe = clientEdited.participe;
                clientEdit.codigo_gln = clientEdited.codigo_gln;
                clientEdit.pais = clientEdited.pais;

                if(!(String.IsNullOrEmpty(Request["tipo_cliente"])))
                {
                    clientEdit.client_type = (from ct in sql.client_types where ct.type == Convert.ToInt16(Request["tipo_cliente"]) select ct).Single();
                }

                if (!String.IsNullOrEmpty(clientEdited.documentacion_impositiva))
                {
                    clientEdit.documentacion_impositiva = clientEdited.documentacion_impositiva;
                }

                switch (userSession.role)
                {
                    case "COMERCIAL":
                        clientEdit.observaciones_comercial = clientEdited.observaciones_comercial;
                        break;
                    case "DISTRIBUCION":
                        clientEdit.observaciones_distribucion = clientEdited.observaciones_distribucion;
                        break;
                    case "REGULATORIOS":
                        clientEdit.observaciones_regulatorios = clientEdited.observaciones_regulatorios;
                        break;
                    case "IMPUESTOS":
                        clientEdit.observaciones_impuestos = clientEdited.observaciones_impuestos;
                        break;
                    case "BEX":
                        clientEdit.observaciones_bex = clientEdited.observaciones_bex;
                        break;
                }
            }

            sql.SubmitChanges();

            if (!String.IsNullOrEmpty(clientEdited.documentacion_impositiva))
            {
                var documentation_impositiva = new documentacion();
                documentation_impositiva.client_id = clientEdited.id;
                documentation_impositiva.file_doc = clientEdited.documentacion_impositiva;

                sql.documentacions.InsertOnSubmit(documentation_impositiva);
            }

            return Approve(clientEdited.id.ToString());
        }