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()); }
static void Main(string[] args) { ConsoleKeyInfo cki; do { Console.WriteLine(":: Menu para pruebas de AFIP facturacion electronica ::"); Console.WriteLine(""); Console.WriteLine("Presione una opcion: "); Console.WriteLine("1. Verificacar LoginTicket."); Console.WriteLine("2. Autorizacion de factura"); Console.WriteLine("ESC. Salir"); cki = Console.ReadKey(); if (cki.Key == ConsoleKey.D1 || cki.Key == ConsoleKey.NumPad1) { AutenticateAFIP(); } if (cki.Key == ConsoleKey.D2 || cki.Key == ConsoleKey.NumPad2) { DetalleRegistros[] detalles = new DetalleRegistros[1]; //factura sin errores DetalleRegistros det = new DetalleRegistros(); det.Concepto = 1; //producto det.DocTipo = 80; //cuit det.DocNro = 20111111112; det.CbteDesde = 3; det.CbteHasta = 3; det.CbteFch = "20160727"; det.ImpTotal = 121; //si importe total es mayor a cero debe existir IVAAlic det.ImpTotConc = 0; det.ImpNeto = 100; det.ImpOpEx = 0; det.ImpTrib = 0; det.ImpIVA = 21; det.MonId = "PES"; det.MonCotiz = 1; IVA[] iva = new IVA[1]; iva[0] = new IVA(); iva[0].Id = 5; //21% iva[0].BaseImp = 100; iva[0].Importe = 21; det.Iva = iva; detalles[0] = det; FE.AutorizacionFactura(1,1,001,detalles); //Console.WriteLine(FE.ReadElementsXML()); } Console.Read(); //pause Console.Clear(); } while (cki.Key != ConsoleKey.Escape); }