public ActionResult Create(FormCollection form)
        {
            if (ModelState.IsValid)
            {
                //db.Encabezado_Factura.Add(encabezado_Factura);
                //db.SaveChanges();
                //return RedirectToAction("Index");
            }

            int idCliente = Convert.ToInt32(form["ID_cliente"]);
            string documento = form["Cliente.Documento"];
            string tipoDocumento = form["Cliente.TipoResponsables.Descripcion"];
            int CondicionIVA = Convert.ToInt32(form["iva"]);

            double desc_Iva;
            if (CondicionIVA <= 2)
            {
                desc_Iva = 0;
            }
            else
            {
                string descripcion = db.CondicionIVA.Where(m => m.Codigo == CondicionIVA).FirstOrDefault().Descripcion;
                desc_Iva = Convert.ToDouble(descripcion.Replace('%', ' '));
                desc_Iva =  Math.Round(desc_Iva, 2);
            }

            string ID_condicion_venta = form["ID_condicion_venta"];
            // DateTime FechaEmision = Convert.ToDateTime(form["Fecha"]);
            //int Remito = Convert.ToInt32(form["Nro_remito"]);
            int OrdenCompra = Convert.ToInt32(form["OrdenCompra"]);
            int DiasFF = Convert.ToInt32(form["Cliente.DiasFF"]);
            int DiasCheque = Convert.ToInt32(form["Cliente.Dias_Cheque"]);
            Decimal Descuento = Convert.ToDecimal(form["Descuento"].Replace('.', ','));
            Double subtotal = Convert.ToDouble(form["subtotal"].Replace('.', ','));
            Double total = Convert.ToDouble(form["total"].Replace('.', ','));

            List<itemFactura> itemsFactura = new List<itemFactura>();
            for (int i = 10; i < form.Count - 2; i = i + 4)
            {
                itemFactura item = new itemFactura
                {
                    IdArticulo = Convert.ToInt32(form[form.GetKey(i)]),
                    cantidad = Convert.ToDecimal(form[form.GetKey(i + 1)]),
                    precioUnitario = Convert.ToDecimal(form[form.GetKey(i + 2)]),
                    precioTotal = Convert.ToDecimal(form[form.GetKey(i + 3)])
                };
                itemsFactura.Add(item);
            }

            //Consdigo autoriazcion en AFIP para generar factura
            DetalleRegistros[] detalles = new DetalleRegistros[1];

            DetalleRegistros det = new DetalleRegistros();

            //el nro de comproabnte lo obtiene la libreria
            //Si no se le envia fecha de comprobante Afip asigna la fecha del proceso
            //det.CbteFch = FechaEmision.ToString("yyyy-MM-dd");

            det.Concepto = 1; //1=Productos
            det.DocNro = Convert.ToInt64(documento);
            det.DocTipo = 80; //80=CUIT
            det.ImpTotal = Math.Round(total, 2); 
            det.ImpNeto = Math.Round(subtotal,2);
            det.ImpTotConc = 0;
            det.ImpOpEx = 0;
            det.ImpTrib = 0;
            det.ImpIVA = Math.Round(subtotal * (desc_Iva / 100), 2);  //
            det.MonId = "PES"; //peso
            det.MonCotiz = 1; //moneda argetnia es 1

            if (CondicionIVA >= 3 && CondicionIVA <= 6)
            {
                Blibox.Logica.Model.IVA[] iva = new Blibox.Logica.Model.IVA[1];
                iva[0] = new Blibox.Logica.Model.IVA();
                iva[0].Id = CondicionIVA; //21%
                iva[0].BaseImp = subtotal;
                iva[0].Importe = subtotal * (desc_Iva / 100);

                det.Iva = iva;
            }

            detalles[0] = det;

            
            FECAERespuesta resp = FE.AutorizacionFactura(1, 1, 001, detalles);



            if (resp.Cabecera.Resultado == "A")
            {
                DateTime fechaVencCAE = DateTime.ParseExact(resp.Detalles[0].CAEFchVto, "yyyyMMdd", null);

                Encabezado_Factura encFactura = new Encabezado_Factura
                {
                    CAE = resp.Detalles[0].CAE,
                    Descuento = Descuento,
                    Fecha = DateTime.Now,
                    FechaVencimientoCAE = fechaVencCAE,
                    ID_cliente = idCliente,
                    ID_condicon_venta = Convert.ToInt32(ID_condicion_venta),
                    IVA = Convert.ToDecimal(desc_Iva),
                    NroComprobante = Convert.ToInt32(resp.Detalles[0].CbteDesde),
                    Nro_remito = 0,
                    OrdenCompra = OrdenCompra,
                    Subtotal = Convert.ToDecimal(subtotal),
                    Total = Convert.ToDecimal(total),
                    Tipo = "1", //1=Factura A

                };


                List<Detalle_factura> detFactura = new List<Detalle_factura>();
                int id_item = 1;
                foreach (itemFactura item in itemsFactura)
                {
                    Detalle_factura newDet = new Detalle_factura
                    {
                        Cantidad = item.cantidad,
                        ID_articulo = item.IdArticulo,
                        Precio_unitario = item.precioUnitario,
                        Precio_total = item.precioTotal,
                        ID_item = id_item
                    };

                    detFactura.Add(newDet);
                    id_item++;


                };

                encFactura.Detalle_factura = detFactura;

                db.Encabezado_Factura.Add(encFactura);
                db.SaveChanges();


                // ViewBag.ID_cliente = new SelectList(db.Cliente, "ID_cliente", "Razon_Social", encabezado_Factura.ID_cliente);
                return RedirectToAction("Index");
                //return View(form);
            }
            else
            {
                // fue rechazada ver que hacer
                foreach(Error err in resp.Errores)
                {
                    HelperController.Instance.agregarMensaje("Error "+err.Codigo+" - "+err.Mensaje, HelperController.CLASE_ERROR);
                }
            }

            //return View(form);
            ViewBag.ID_cliente = new SelectList(db.Cliente, "ID_cliente", "Razon_Social");
            ViewBag.CondicionVenta = new SelectList(db.Condicion_venta, "ID_condicion_venta", "Descripcion");
            ViewBag.CondicionIVA = new SelectList(db.CondicionIVA, "Codigo", "Descripcion", "5");
            ViewBag.art = "";
            return View(new Encabezado_Factura());
        }
 public ActionResult Edit(Encabezado_Factura encabezado_Factura)
 {
     if (ModelState.IsValid)
     {
         db.Entry(encabezado_Factura).State = EntityState.Modified;
         db.SaveChanges();
         return RedirectToAction("Index");
     }
     ViewBag.ID_cliente = new SelectList(db.Cliente, "ID_cliente", "Razon_Social", encabezado_Factura.ID_cliente);
     ViewBag.ID_condicon_venta = new SelectList(db.Condicion_venta, "ID_condicion_venta", "Descripcion", encabezado_Factura.ID_condicon_venta);
     ViewBag.Nro_factura = new SelectList(db.Detalle_factura, "Nro_factura", "Nro_factura", encabezado_Factura.Nro_factura);
     ViewBag.ID_vendedor = new SelectList(db.Vendedor, "ID_vendedor", "Nombre", encabezado_Factura.ID_vendedor);
     return View(encabezado_Factura);
 }