Ejemplo n.º 1
0
 public CategoryController(AppDbContex db)
 {
     _db = db;
 }
 public SpeakerController(AppDbContex db, IHostingEnvironment env)
 {
     _db  = db;
     _env = env;
 }
Ejemplo n.º 3
0
 public AdminController(AppDbContex db, IDataRepository repo, IHostingEnvironment hostenv)
 {
     this.db      = db;
     this.repo    = repo;
     this.hostenv = hostenv;
 }
Ejemplo n.º 4
0
 public UserController(AppDbContex appDbContex, IConfiguration configuration, ILogger <UserController> logger)
 {
     this.appDbContex   = appDbContex;
     this.configuration = configuration;
     this.logger        = logger;
 }
Ejemplo n.º 5
0
        public void GeneraXmlsINVOICE()
        {
            string      errores     = "";
            AppDbContex appDbContex = new AppDbContex();

            DataSetRproTableAdapters.VYVARTICULOSTableAdapter adapter = new DataSetRproTableAdapters.VYVARTICULOSTableAdapter();



            try
            {
                string xmlDoc        = "";
                string sbs           = "";
                string store         = "";
                string shiptoStoreNo = "";
                string AlusError     = "";
                string invoiceSid    = "";
                string invoiceNo     = "";

                //Cliente
                string CustXml    = "";
                string CustID     = "";
                string CustSid    = "";
                string rut        = ""; //normalizado
                string orderRut   = "";
                string ArchivoLog = "";
                //acumula clientes nuevos;
                string xmlCustomer = "";



                DateTime created_date = DateTime.Now;



                DataSetRpro.VYVARTICULOSDataTable ItemTable = new DataSetRpro.VYVARTICULOSDataTable();

                List <VentaDTOs> VentasList = appDbContex.VentaDTOs.Where(e => (e.folio != null &&
                                                                                e.InvoiceSid == null &&
                                                                                e.pdf != null)).Take(20).ToList <VentaDTOs>();

                Log("Pendientes: " + (Convert.ToString(VentasList.Count)), "Pendientes.txt");
                Log("Pendientes: ", "debug.txt");
                var cfg = Properties.Settings.Default;

                foreach (VentaDTOs pedidoRef in VentasList)
                {
                    VentaDTOs pedido = appDbContex.VentaDTOs.Find(pedidoRef.id);
                    ArchivoLog = pedido.id + "-" + pedido.folio.ToString() + ".txt";
                    EliminaLog(ArchivoLog);
                    pedido.FechaDocele = DateTime.Now;

                    try
                    {
                        appDbContex.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        errores += e.Message;
                        continue;
                    }


                    string createdDate = Convert.ToDateTime(pedido.created_date).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
                    string xml         = InvoiceCAB();

                    try
                    {
                        //parte limpio

                        Log("Verifica archivos pendientes en:  " + cfg.Invoice_CarpetaStation + @"\INVOICE999.xml", ArchivoLog, false);

                        //Impersonation.RunAsUser(credentials, LogonType.NewCredentials, () =>
                        //{

                        if (File.Exists(cfg.Invoice_CarpetaStation + @"\INVOICE999.xml"))
                        {
                            File.WriteAllText(ruta + @"\Info.txt", "Existen Xmls pendientes en carpeta " + cfg.Invoice_CarpetaStation + @"\INVOICE999.xml", Encoding.UTF8);

                            Log("Existen Xmls pendientes en carpeta " + cfg.Invoice_CarpetaStation + @"\INVOICE999.xml", ArchivoLog, true);

                            continue;
                        }

                        //});



                        Log("Invoice Cabecera", ArchivoLog, true);

                        int iSbs   = Convert.ToInt32(pedido.sbs_no);
                        int iStore = Convert.ToInt32(pedido.store_no);

                        sbs   = iSbs.ToString("00#");
                        store = iStore.ToString("00#");


                        //sSID:='1'+'0000'+ AdoQuery.FieldByname('invc_no').AsStng;

                        //  SBS   Store  TIpoDoc  1=Boleta 2=fatura etc... Folio 12 digitos
                        //  001   001     1


                        invoiceSid = sbs + store + "1" + Convert.ToString(pedido.folio).Trim().PadLeft(12, '0');
                        invoiceNo  = Convert.ToString(pedido.folio).Trim().PadLeft(9, '0');// item.folio.Trim();//. code.PadLeft(14, '0');

                        shiptoStoreNo = store;


                        //CLiente
                        try
                        {
                            string dv = "";
                            CustID = validarRut(pedido.cust_rut, out dv);

                            ////Rut Completo

                            rut = "";

                            if (!string.IsNullOrEmpty(CustID))
                            {
                                rut = CustID + "-" + dv;

                                if (dv.ToUpper() == "K")
                                {
                                    //-3204210179006066692
                                    //      11000140055692
                                    CustSid = "11000" + CustID + "0";
                                }
                                else
                                {
                                    CustSid = "11000" + CustID + dv;
                                }

                                var queriesTableAdapter = new ClientesTableAdapter();

                                var ClientesDb = queriesTableAdapter.GetData(Convert.ToDecimal(sbs), rut);

                                CustXml = "";

                                if (ClientesDb.Count() == 0)
                                {
                                    // Si no existe Sid para ese rut genera xml de creacion de cliente
                                    CustXml = CustomerXML();

                                    CustXml = CustXml.Replace("{cust_sid}", CustSid);
                                    CustXml = CustXml.Replace("{cust_id}", CustID);
                                    CustXml = CustXml.Replace("{sbs_no}", sbs);
                                    CustXml = CustXml.Replace("{store_no}", store);
                                    CustXml = CustXml.Replace("{first_name}", pedido.first_name.Norm(40));
                                    CustXml = CustXml.Replace("{last_name}", pedido.last_name.Norm(40));
                                    CustXml = CustXml.Replace("{info1}", rut);

                                    CustXml = CustXml.Replace("{created_date}", (DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss")));
                                    CustXml = CustXml.Replace("{modified_date}", (DateTime.Now.AddSeconds(1).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss")));

                                    CustXml = CustXml.Replace("{address1}", pedido.direccion1.Norm(40));
                                    CustXml = CustXml.Replace("{address2}", pedido.comuna.Norm(40));
                                    CustXml = CustXml.Replace("{address3}", pedido.ciudad.Norm(40));
                                    CustXml = CustXml.Replace("{address4}", "");
                                    CustXml = CustXml.Replace("{address5}", "");
                                    CustXml = CustXml.Replace("{address6}", "");
                                    CustXml = CustXml.Replace("{zip}", "");
                                    CustXml = CustXml.Replace("{phone1}", pedido.phone1.Norm(40)); // order.objFactura.DatosCliente.Telefono.Norm(40));
                                    CustXml = CustXml.Replace("{phone2}", pedido.phone2.Norm(40)); // order.objFactura.DatosCliente.Celular.Norm(40));
                                    CustXml = CustXml.Replace("{email_addr}", pedido.email_addr);  //order.objFactura.DatosCliente.Correo.Norm(40));
                                    CustXml = CustXml.Replace(@"{notes}", "");

                                    //CustXml = CustXml.Replace("{CustUdf1}", "");
                                    //CustXml = CustXml.Replace("{CustUdf2}", "");
                                    //CustXml = CustXml.Replace("{CustUdf3}", "");
                                    //CustXml = CustXml.Replace("{CustUdf4}", "");
                                    //CustXml = CustXml.Replace("{CustUdf5}", "");
                                    //CustXml = CustXml.Replace("{CustUdf6}", "");
                                    //CustXml = CustXml.Replace("{CustUdf7}", "");
                                    //CustXml = CustXml.Replace("{CustUdf8}", "");
                                    //CustXml = CustXml.Replace("{CustUdf9}", "");
                                    //CustXml = CustXml.Replace("{CustUdf10}", "");
                                    //CustXml = CustXml.Replace("{CustUdf11}", "");
                                    //CustXml = CustXml.Replace("{CustUdf12}", "");
                                    //CustXml = CustXml.Replace("{CustUdf13}", "");
                                    //CustXml = CustXml.Replace("{CustUdf14}", "");
                                    //CustXml = CustXml.Replace("{CustUdf15}", "");
                                    //CustXml = CustXml.Replace("{CustUdf16}", "");
                                    //CustXml = CustXml.Replace("{CustUdf17}", "");
                                    //CustXml = CustXml.Replace("{CustUdf18}", "");
                                    //CustXml = CustXml.Replace("{CustUdf19}", "");
                                    //CustXml = CustXml.Replace("{CustUdf20}", "");
                                }
                                else //cliente deberia existir trae custSid y CUstID para el rut
                                {
                                    DataSetRpro.ClientesRow clieRpro = ClientesDb.First();
                                    //devuelve custsid y cusId
                                    CustSid = clieRpro.CUST_SID;
                                    CustID  = clieRpro.CUST_ID;
                                }
                            }

                            string XmlInvcCust = InvoiceCustomer();

                            //incluye cliente
                            if (rut != "")
                            {
                                XmlInvcCust = XmlInvcCust.Replace("{cust_sid}", CustSid);
                                XmlInvcCust = XmlInvcCust.Replace("{cust_id}", CustID);
                                XmlInvcCust = XmlInvcCust.Replace("{store_no}", store);
                                XmlInvcCust = XmlInvcCust.Replace("{first_name}", pedido.first_name.Norm(40));
                                XmlInvcCust = XmlInvcCust.Replace("{last_name}", pedido.last_name.Norm(40));
                                XmlInvcCust = XmlInvcCust.Replace("{info1}", rut);
                                XmlInvcCust = XmlInvcCust.Replace("{modified_date}", DateTime.Now.AddSeconds(1).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss"));
                                XmlInvcCust = XmlInvcCust.Replace("{sbs_no}", sbs);
                                XmlInvcCust = XmlInvcCust.Replace("{address1}", pedido.direccion1.Norm(40));
                                XmlInvcCust = XmlInvcCust.Replace("{address2}", pedido.comuna.Norm(40));
                                XmlInvcCust = XmlInvcCust.Replace("{address3}", pedido.ciudad.Norm(40));
                                XmlInvcCust = XmlInvcCust.Replace("{address4}", "");
                                XmlInvcCust = XmlInvcCust.Replace("{phone1}", pedido.phone1.Norm(40));
                                XmlInvcCust = XmlInvcCust.Replace("{phone2}", pedido.phone2.Norm(40));



                                xml = xml.Replace("<CUSTOMER/>", XmlInvcCust);
                                xml = xml.Replace("<SHIPTO_CUSTOMER/>", "");

                                xml = xml.Replace("{cust_sid}", CustSid);
                                xml = xml.Replace("{addr_no}", "1");
                                //llena la salida
                            }


                            xmlCustomer = xmlCustomer + CustXml;
                        }
                        catch (Exception)
                        {
                        }

                        //Fin CLiente

                        xml = xml.Replace("{invc_sid}", invoiceSid);
                        xml = xml.Replace("{sbs_no}", sbs);
                        xml = xml.Replace("{store_no}", store);
                        xml = xml.Replace("{invc_no}", invoiceNo);
                        xml = xml.Replace("{modified_date}", createdDate);
                        xml = xml.Replace("{created_date}", createdDate);
                        xml = xml.Replace("{tracking_no}", Convert.ToString(pedido.folio).Trim());
                        xml = xml.Replace("{fiscal_doc_id}", Convert.ToString(pedido.folio).Trim());

                        // cust_fld
                        xml = xml.Replace("{cust_fld}", "");

                        // CANAL ORIGEN
                        xml = xml.Replace("{comment_no_1}", "Venta Web");


                        xml = xml.Replace("{comment_no_2}", pedido.id);

                        xml = xml.Replace("{note}", "");


                        //pago

                        try
                        {
                            string cardName = "";
                            xml = xml.Replace("{udf_no1}", cfg.Invoice_FlagName);

                            Log("Pago " + errores, ArchivoLog, true);



                            foreach (var pago in pedido.Pagos)
                            {
                                try
                                {
                                    if (string.IsNullOrEmpty(pago.tender_type))
                                    {
                                        Log("Pago tender_type no especificado: ", ArchivoLog, true);
                                    }
                                }
                                catch (Exception)
                                {
                                }


                                //if ((pago.tender_type.ToUpper() == "EFECTIVO")|| (pago.tender_type.ToUpper() == "EFECIVO"))
                                //{
                                //    xml = xml.Replace("{tender_type}", "0");//0 efectivo 2 credito
                                //    xml = xml.Replace("{montoPago}", pedido.total_amt.ToString());
                                //    xml = xml.Replace("{auth}", "");
                                //    xml = xml.Replace("{crd_name}", "");
                                //    xml = xml.Replace("{eftdata0}", "");
                                //    xml = xml.Replace("{eftdata1}", "");
                                //    xml = xml.Replace("{eftdata2}", "");
                                //    xml = xml.Replace("{eftdata3}", "");
                                //    xml = xml.Replace("{eftdata4}", "");
                                //    xml = xml.Replace("{eftdata5}", "");
                                //    xml = xml.Replace("{eftdata6}", "");
                                //    xml = xml.Replace("{eftdata7}", "");
                                //    xml = xml.Replace("{eftdata8}", "");
                                //    xml = xml.Replace("{eftdata9}", "");
                                //    xml = xml.Replace("{eftdata10}", "");
                                //}
                                //else
                                string crdName = "";

                                if (pago.tender_type.ToUpper() == "DEBITO")
                                {
                                    crdName = "DWEB";
                                    xml     = xml.Replace("{tender_type}", "11");
                                    xml     = xml.Replace("{montoPago}", pedido.total_amt.ToString());
                                    xml     = xml.Replace("{auth}", pago.auth_no);
                                    xml     = xml.Replace("{crd_name}", crdName);
                                    xml     = xml.Replace("{eftdata0}", "DB");
                                    xml     = xml.Replace("{eftdata1}", "0");
                                    xml     = xml.Replace("{eftdata2}", crdName);
                                    xml     = xml.Replace("{eftdata3}", pago.op_no);
                                    xml     = xml.Replace("{eftdata4}", "0");
                                    xml     = xml.Replace("{eftdata5}", pago.comments);
                                    xml     = xml.Replace("{eftdata6}", "0");
                                    xml     = xml.Replace("{eftdata7}", "0");
                                    xml     = xml.Replace("{eftdata8}", "0");
                                    xml     = xml.Replace("{eftdata9}", "0");
                                    xml     = xml.Replace("{eftdata10}", "0");
                                }
                                else
                                {
                                    crdName = "CWEB";
                                    xml     = xml.Replace("{tender_type}", "2"); // 2 credito
                                    xml     = xml.Replace("{montoPago}", pedido.total_amt.ToString());
                                    xml     = xml.Replace("{auth}", pago.auth_no);
                                    xml     = xml.Replace("{crd_name}", crdName);
                                    xml     = xml.Replace("{eftdata0}", "CR");
                                    if (string.IsNullOrEmpty(pago.cuotas))
                                    {
                                        xml = xml.Replace("{eftdata1}", "1");
                                    }
                                    else
                                    {
                                        xml = xml.Replace("{eftdata1}", pago.cuotas.ToString());
                                    }

                                    xml = xml.Replace("{eftdata2}", crdName);
                                    xml = xml.Replace("{eftdata3}", pago.op_no);
                                    xml = xml.Replace("{eftdata4}", "0");
                                    xml = xml.Replace("{eftdata5}", pago.comments);
                                    xml = xml.Replace("{eftdata6}", "0");
                                    xml = xml.Replace("{eftdata7}", "0");
                                    xml = xml.Replace("{eftdata8}", "0");
                                    xml = xml.Replace("{eftdata9}", "0");
                                    xml = xml.Replace("{eftdata10}", "0");
                                }


                                break;
                            }
                        }
                        catch (Exception ex)
                        {
                            Log("Pago con error en: " + ex, ArchivoLog, true);
                        }


                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'TENDER_TYPE', ttCreditCard);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'AMT', AttrValue.Monto);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'DOC_NO', AttrValue.NumeroTarjeta);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'AUTH', AttrValue.Autorizacion);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'CRD_TYPE', AttrValue.Crd_Type);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'EFTDATA0', AttrValue.TipoTarjeta);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'EFTDATA1', AttrValue.Cuotas);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'EFTDATA2', AttrValue.NombreTarjeta);
                        //
                        //campos adicionales en pos integrado
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'EFTDATA3', AttrValue.NrOperacion);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'EFTDATA4', AttrValue.MontoCuota);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'EFTDATA5', AttrValue.Cuenta);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'EFTDATA6', AttrValue.FechaOperacion);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'EFTDATA7', AttrValue.HoraOperacion);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'EFTDATA8', AttrValue.CodComercio);
                        //fAdapter.BOSetAttributeValueByName(TenderHnd, 'EFTDATA9', AttrValue.TerminalID);


                        int    index        = 0;
                        double ItemUnitario = 0;
                        double dif          = 0;
                        AlusError = "";

                        Log("Articulos  ", ArchivoLog);
                        foreach (var linea in pedido.Items)
                        {
                            index = index + 1;
                            string tempItem = InvoiceITEM();
                            ItemUnitario = Convert.ToDouble(linea.PriceLine / linea.qty);



                            tempItem = tempItem.Replace("{item_pos}", index.ToString());
                            tempItem = tempItem.Replace("{store_no}", shiptoStoreNo);
                            tempItem = tempItem.Replace("{price}", Convert.ToInt32(Math.Round(ItemUnitario)).ToString());
                            tempItem = tempItem.Replace("{orig_price}", Convert.ToInt32(Math.Round(ItemUnitario)).ToString());

                            //totalItems += checkoutitem.totalWithDiscount;

                            tempItem = tempItem.Replace("{qty}", Convert.ToInt32(linea.qty).ToString());
                            tempItem = tempItem.Replace("{alu}", linea.itemcode);



                            Log("FillByAlu:  " + linea.itemcode, ArchivoLog, true);

                            try
                            {
                                adapter.FillBySbsAlu(ItemTable, linea.itemcode, iSbs.ToString());
                            }
                            catch (Exception oraEx)
                            {
                                Log("verifique vista VyVProductos " + oraEx.Message + " " + oraEx.InnerException, "OracleError.txt");
                            }



                            Log("ItemTable.Count: :  ", ArchivoLog, true);
                            if (ItemTable.Count > 0)
                            {
                                DataSetRpro.VYVARTICULOSRow rowItem = ItemTable.First();

                                tempItem = tempItem.Replace("{item_sid}", rowItem.ITEM_SID);
                                //tempItem = tempItem.Replace("{descripcion1}", rowItem.DESCRIPTION1);
                                tempItem = tempItem.Replace("{tax_code}", rowItem.TAX_CODE.ToString());



                                tempItem = tempItem.Replace("{tax_amt}", (Convert.ToDecimal(ItemUnitario) * (rowItem.TAX_PERC1 / 100)).ToString("#.00")).Replace(",", ".");

                                tempItem = tempItem.Replace("{tax_perc}", Convert.ToString(rowItem.TAX_PERC1).Replace(",", "."));

                                tempItem = tempItem.Replace("{cost}", Math.Round(rowItem.COST).ToString());
                                tempItem = tempItem.Replace("{price_level}", "1");
                            }
                            else
                            {
                                //checkoutitem.ProductVersion.code
                                AlusError += linea.itemcode + "\r\n";
                            }

                            xml += tempItem;
                            Log("xml: " + xml, "debug.txt");
                        }
                    }
                    catch (Exception e3)
                    {
                        errores += pedido.id + " " + e3.Message + " " + xml + "\r\n";
                        xml      = "";
                    }


                    if (AlusError != "")
                    {
                        //alus con error no se procesa

                        //ile.WriteAllText(ruta + @"\logs\AluError_" + entry._id + ".txt", AlusError, Encoding.UTF8);
                        Log("AluError: " + AlusError, ArchivoLog, true);

                        xml = "";

                        try
                        {
                            pedido.InvoiceSid   = null;
                            pedido.ErrorInvoice = "articulo no existe " + AlusError;
                            appDbContex.SaveChanges();
                        }
                        catch (Exception e1)
                        {
                            File.WriteAllText(ruta + @"SaveInvoiceError.txt", e1.Message, Encoding.UTF8);
                            Log("SaveChangesInvoiceError " + e1.Message, ArchivoLog, true);
                        }
                    }

                    if (string.IsNullOrEmpty(xml))
                    {
                        continue;
                    }

                    xml += @"</INVC_ITEMS><INVC_FEES/><INVC_COMMENTS/></INVOICE>";

                    xmlDoc += xml;

                    //Actualizamos SId

                    try
                    {
                        Log("SaveChanges: ", ArchivoLog);

                        pedido.InvoiceSid   = invoiceSid;
                        pedido.ErrorInvoice = "OK";
                        appDbContex.SaveChanges();
                        Log("Save: OK ", ArchivoLog, true);
                    }
                    catch (Exception e)
                    {
                        Log("Save: ERROR " + e.Message, ArchivoLog, true);
                        errores += e.Message;
                    }
                }

                if (string.IsNullOrEmpty(xmlDoc))
                {
                    return;
                }


                try
                {
                    xmlDoc = InvoiceDOC() + xmlDoc + "</INVOICES></DOCUMENT>";

                    if (!string.IsNullOrEmpty(xmlCustomer))
                    {
                        xmlCustomer = CustDOC() + xmlCustomer + @"</CUSTOMERS></DOCUMENT>";

                        File.WriteAllText(cfg.Invoice_CarpetaStation + @"\CUSTOMER666.xml", xmlCustomer, Encoding.UTF8);
                        File.WriteAllText(ruta + @"\CUSTOMER666.xml", xmlCustomer, Encoding.UTF8);
                    }

                    // var credentials = new UserCredentials("frch", "retail", "SAP.0209");
                    // Impersonation.RunAsUser(credentials, LogonType.NewCredentials

                    //escribe en carpeta de integracion ECM con autentificacion para RUTAS EN RED

                    //Impersonation.RunAsUser(credentials, LogonType.NewCredentials, () =>
                    // {
                    File.WriteAllText(cfg.Invoice_CarpetaStation + @"\INVOICE999.xml", xmlDoc, Encoding.UTF8);
                    File.WriteAllText(ruta + @"\INVOICE999.xml", xmlDoc, Encoding.UTF8);

                    //});
                }
                catch (Exception e)
                {
                    errores = errores + e.Message;
                }

                if (errores != "")
                {
                    Log("Errores: " + errores, ArchivoLog, true);
                    File.WriteAllText(ruta + @"\Errores.txt", errores);
                }


                if (errores != "")
                {
                    Log("Errores: " + errores, ArchivoLog, true);
                    File.WriteAllText(ruta + @"\Errores.txt", errores);
                }
            }
            catch (Exception e)
            {
                File.WriteAllText(ruta + @"\GeneraXmlsInvoiceError.txt", "Linea: " + e.StackTrace + " " + e.InnerException + " " + e.Message, Encoding.UTF8);
                if (errores != "")
                {
                    File.WriteAllText(ruta + @"\ErrorInvc.txt", errores);
                }
            }
            finally
            {
                appDbContex.Dispose();
            }

            return;
        }
 public HomeSliderController(AppDbContex db, IHostingEnvironment env)
 {
     _db  = db;
     _env = env;
 }
Ejemplo n.º 7
0
 public HomeController(ILogger <HomeController> logger, AppDbContex appDbContex)
 {
     this.appDbContex = appDbContex;
     _logger          = logger;
 }
Ejemplo n.º 8
0
 public ActivityController(AppDbContex appDbContex)
 {
     _appDbContex = appDbContex;
 }
Ejemplo n.º 9
0
 public CourseController(AppDbContex db, IHostingEnvironment env)
 {
     _db  = db;
     _env = env;
 }
Ejemplo n.º 10
0
 public CountryController(AppDbContex _appDbContex)
 {
     this.appDbContex = _appDbContex;
 }
Ejemplo n.º 11
0
 public BlogController(AppDbContex db, IHostingEnvironment env, UserManager <AppUser> userManager)
 {
     _db          = db;
     _env         = env;
     _userManager = userManager;
 }
Ejemplo n.º 12
0
 public PurchaseController(AppDbContex appDbContex)
 {
     this.appDbContex = appDbContex;
 }
Ejemplo n.º 13
0
 public ResultController(AppDbContex db, IHostingEnvironment env, IDataRepository repo)
 {
     this.db   = db;
     this.env  = env;
     this.repo = repo;
 }
Ejemplo n.º 14
0
 public LoginController(IConfiguration configuration, AppDbContex appDbContex)
 {
     this.configuration = configuration;
     this.appDbContex   = appDbContex;
 }
Ejemplo n.º 15
0
 public UserController(AppDbContex appDbContex)
 {
     this.appDbContex = appDbContex;
 }
Ejemplo n.º 16
0
 public SubscribeController(AppDbContex db)
 {
     _db = db;
 }
Ejemplo n.º 17
0
 public EventController(AppDbContex db, UserManager <AppUser> userManager)
 {
     _db          = db;
     _userManager = userManager;
 }
 public HeaderViewComponent(AppDbContex db)
 {
     _db = db;
 }
Ejemplo n.º 19
0
 public DataManager(AppDbContex _appDbContex)
 {
     this.appDbContex = _appDbContex;
 }
Ejemplo n.º 20
0
 public MyCourseController(AppDbContex db, IDataRepository repo)
 {
     this.db   = db;
     this.repo = repo;
 }
Ejemplo n.º 21
0
 public CartController(AppDbContex appDbContex)
 {
     this.appDbContex = appDbContex;
 }
Ejemplo n.º 22
0
 public SalesController(AppDbContex appDbContex)
 {
     this.appDbContex = appDbContex;
 }
 public IncidentTypeController(AppDbContex _appDbContex)
 {
     this.appDbContex = _appDbContex;
 }
 public AboutVideoController(AppDbContex db)
 {
     _db = db;
 }
Ejemplo n.º 25
0
 public CoursesController(AppDbContex db, UserManager <AppUser> userManager)
 {
     _db          = db;
     _userManager = userManager;
 }
Ejemplo n.º 26
0
 public TeacherController(AppDbContex db)
 {
     _db = db;
 }
Ejemplo n.º 27
0
 public BlogController(UserManager <AppUser> userManager, AppDbContex db)
 {
     _userManager = userManager;
     _db          = db;
 }
 public AboutNoticeController(AppDbContex db)
 {
     _db = db;
 }
Ejemplo n.º 29
0
 public ServicesController(AppDbContex db, IDataRepository repo)
 {
     this.db   = db;
     this.repo = repo;
 }
Ejemplo n.º 30
0
        public void CreaDocumentosElectronicos()

        {
            AppDbContex dbContex = new AppDbContex();

            string LogName = "Facturacion.log";
            string errores = "";


            try
            {
                dbContex = new AppDbContex();


                //buscar cabeceras sin folio y sin procesar

                List <VentaDTOs> pedidos = dbContex.VentaDTOs.Where(c => ((c.folio == null) || (c.pdf == null))).ToList <VentaDTOs>();

                Log("Pendientes: " + (Convert.ToString(pedidos.Count)), ruta + @"\Pendientes.txt");


                foreach (VentaDTOs pedidoReferencia in pedidos)
                {
                    if (finalizar)
                    {
                        break;
                    }

                    try
                    {
                        VentaDTOs pedido = dbContex.VentaDTOs.Find(pedidoReferencia.id);

                        var cfg = Properties.Settings.Default;

                        pedido.FechaDocele = DateTime.Now;

                        if (pedido.rutEmpresa != cfg.RutEmisor)
                        {
                            pedido.ErrorDocElec = "Rut empresa no coincide con el configurado";
                            try
                            {
                                dbContex.SaveChanges();
                            }
                            catch (Exception e)
                            {
                                errores += e.Message;
                            }
                            continue;
                        }


                        string mensajeValidacion = "";

                        if (!Validaciones(pedido, ref mensajeValidacion))
                        {
                            pedido.ErrorDocElec = mensajeValidacion;
                            try
                            {
                                dbContex.SaveChanges();
                                Log(mensajeValidacion, ruta + @"\ErrorValidacion.txt");
                            }
                            catch (Exception e)
                            {
                                errores += e.Message;
                            }
                            continue;
                        }


                        try
                        {
                            dbContex.SaveChanges();
                        }
                        catch (Exception e)
                        {
                            errores += e.Message;
                            continue;
                        }



                        if (string.IsNullOrEmpty(ruta))
                        {
                            return;
                        }



                        try
                        {
                            string test = ruta + @"\Pdfs";

                            File.WriteAllText(test + @"\test.pdf", "test");
                        }
                        catch (Exception)
                        {
                            return;
                        }

                        SettingAttribute st = new SettingAttribute();

                        string rutEmisor = cfg.RutEmisor;


                        ServiceFacturacionBES.SolicitarFolio ResponseFolio = new ServiceFacturacionBES.SolicitarFolio();



                        ServiceFacturacionBES.DTELocal WS = new ServiceFacturacionBES.DTELocal();//  ("DTELocalSoap", tienda.Facturador.HostWebService);
                        //WS.Url = tienda.Facturador.HostWebService;



                        int folio = 0;

                        if (pedido.folio != null)
                        {
                            folio = (int)pedido.folio;
                        }

                        //Si es cero se solicita un nuevo Folio y lo asigna al registro
                        if (folio == 0)
                        {
                            ResponseFolio = WS.Solicitar_Folio(rutEmisor, 39);
                            pedido.folio  = ResponseFolio.Folio;

                            try
                            {
                                dbContex.SaveChanges();
                                Log("SaveChanges: OK ", "debug.txt");
                            }
                            catch (Exception e)
                            {
                                errores += e.Message;
                            }
                        }
                        else
                        {
                            //lleno fake response :)
                            ResponseFolio.Folio      = folio;
                            ResponseFolio.Estatus    = 0;
                            ResponseFolio.MsgEstatus = "folio Bkp: ";
                        }



                        if (ResponseFolio.Estatus == 0)
                        {
                            try
                            {
                                string idVisual = "";


                                string email = "";
                                Log("Estatus 0 : " + ResponseFolio.MsgEstatus + Convert.ToString(ResponseFolio.Folio), ruta + @"\LastResponseFolio.txt");

                                //Entry entry = new Entry();

                                //entry = (Entry)JsonConvert.DeserializeObject<Entry>(entry.json, settings);


                                EnvioBOLETA txtBoleta = new EnvioBOLETA();
                                txtBoleta.version = "1.0";
                                //CARATULA
                                txtBoleta.SetDTE = new EnvioBOLETASetDTE();


                                txtBoleta.SetDTE.Caratula         = new EnvioBOLETASetDTECaratula();
                                txtBoleta.SetDTE.Caratula.version = "1.0";

                                txtBoleta.SetDTE.Caratula.RutEmisor = rutEmisor;
                                txtBoleta.SetDTE.Caratula.RutEnvia  = rutEmisor;

                                txtBoleta.SetDTE.Caratula.FchResol         = DateTime.Now;//2018-09-13
                                txtBoleta.SetDTE.Caratula.NroResol         = 80;
                                txtBoleta.SetDTE.Caratula.TmstFirmaEnv     = DateTime.Now;
                                txtBoleta.SetDTE.Caratula.SubTotDTE        = new EnvioBOLETASetDTECaratulaSubTotDTE();
                                txtBoleta.SetDTE.Caratula.SubTotDTE.TpoDTE = 39;
                                txtBoleta.SetDTE.Caratula.SubTotDTE.NroDTE = 1;

                                txtBoleta.SetDTE.DTE           = new EnvioBOLETASetDTEDTE();
                                txtBoleta.SetDTE.DTE.version   = "1.0";
                                txtBoleta.SetDTE.DTE.Documento = new EnvioBOLETASetDTEDTEDocumento();
                                //CABECERA
                                txtBoleta.SetDTE.DTE.Documento.Encabezado = new EnvioBOLETASetDTEDTEDocumentoEncabezado();

                                txtBoleta.SetDTE.DTE.Documento.Encabezado.IdDoc = new EnvioBOLETASetDTEDTEDocumentoEncabezadoIdDoc();

                                txtBoleta.SetDTE.DTE.Documento.Encabezado.IdDoc.TipoDTE = 39;
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.IdDoc.Folio   = Convert.ToInt32(ResponseFolio.Folio);

                                //se creara con fecha del pedido de Internet
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.IdDoc.FchEmis     = Convert.ToDateTime(pedido.created_date);
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.IdDoc.IndServicio = 3;

                                //EMISOR
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Emisor = new EnvioBOLETASetDTEDTEDocumentoEncabezadoEmisor();

                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Emisor.RUTEmisor    = rutEmisor;
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Emisor.RznSocEmisor = Norm(cfg.RznSocEmisor);
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Emisor.GiroEmisor   = Norm(cfg.GiroEmisor);
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Emisor.CdgSIISucur  = cfg.CdgSIISucur;
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Emisor.DirOrigen    = Norm(cfg.DirOrigen);
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Emisor.CmnaOrigen   = Norm(cfg.CmnaOrigen);
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Emisor.CiudadOrigen = Norm(cfg.CiudadOrigen);

                                //RECEPTOR
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Receptor = new EnvioBOLETASetDTEDTEDocumentoEncabezadoReceptor();

                                email = pedido.email_addr;

                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Receptor.RUTRecep = validarRut(pedido.cust_rut);
                                //CARATULA
                                txtBoleta.SetDTE.Caratula.RutReceptor = txtBoleta.SetDTE.DTE.Documento.Encabezado.Receptor.RUTRecep;

                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Receptor.CdgIntRecep = "";
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Receptor.RznSocRecep = Norm(pedido.first_name + " " + pedido.last_name);
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Receptor.Contacto    = "";


                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Receptor.DirRecep    = Norm(pedido.direccion1);
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Receptor.CmnaRecep   = Norm(pedido.comuna);
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Receptor.CiudadRecep = Norm(pedido.ciudad);

                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Receptor.DirPostal    = Norm(pedido.direccion1);
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Receptor.CmnaPostal   = Norm(pedido.comuna);
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Receptor.CiudadPostal = Norm(pedido.ciudad);



                                if (string.IsNullOrEmpty(email))
                                {
                                    email = "SinMail";
                                }

                                //FIN ENCABEZADO

                                //DETALLE

                                //Despacho
                                //double dif = 0;
                                //dif = Math.Round(entry.gross) - Math.Round(entry.totalWithDiscount);

                                //if (dif > 0)
                                //{
                                //    txtBoleta.SetDTE.DTE.Documento.Detalle = new EnvioBOLETASetDTEDTEDocumentoDetalle[entry.CheckoutItems.Count() + 1];
                                //}
                                //else
                                //{
                                txtBoleta.SetDTE.DTE.Documento.Detalle = new EnvioBOLETASetDTEDTEDocumentoDetalle[pedido.Items.Count()];
                                //}

                                int index = 0;


                                double ItemUnitario = 0;

                                foreach (var linea in pedido.Items)
                                {
                                    ItemUnitario = 0;
                                    txtBoleta.SetDTE.DTE.Documento.Detalle[index] = new EnvioBOLETASetDTEDTEDocumentoDetalle();

                                    txtBoleta.SetDTE.DTE.Documento.Detalle[index].NroLinDet = index + 1;

                                    ItemUnitario = linea.PriceLine / linea.qty;


                                    txtBoleta.SetDTE.DTE.Documento.Detalle[index].CdgItem           = new EnvioBOLETASetDTEDTEDocumentoDetalleCdgItem();
                                    txtBoleta.SetDTE.DTE.Documento.Detalle[index].CdgItem.TpoCodigo = "ALU";

                                    txtBoleta.SetDTE.DTE.Documento.Detalle[index].CdgItem.VlrCodigo = Norm(linea.itemcode);
                                    txtBoleta.SetDTE.DTE.Documento.Detalle[index].DscItem           = "";
                                    txtBoleta.SetDTE.DTE.Documento.Detalle[index].NmbItem           = Norm(linea.descripcion);
                                    txtBoleta.SetDTE.DTE.Documento.Detalle[index].QtyItem           = linea.qty;
                                    txtBoleta.SetDTE.DTE.Documento.Detalle[index].PrcItem           = Convert.ToInt32(Math.Round(ItemUnitario));
                                    txtBoleta.SetDTE.DTE.Documento.Detalle[index].MontoItem         = Convert.ToInt32(Math.Truncate(linea.PriceLine));

                                    index = index + 1;
                                }

                                // restar total items si total mayor agregar item po recargo despacho

                                ////calculo despacho


                                //if (dif > 0)
                                //{
                                //    txtBoleta.SetDTE.DTE.Documento.Detalle[index] = new EnvioBOLETASetDTEDTEDocumentoDetalle();

                                //    txtBoleta.SetDTE.DTE.Documento.Detalle[index].NroLinDet = index + 1;

                                //    txtBoleta.SetDTE.DTE.Documento.Detalle[index].CdgItem = new EnvioBOLETASetDTEDTEDocumentoDetalleCdgItem();
                                //    txtBoleta.SetDTE.DTE.Documento.Detalle[index].CdgItem.TpoCodigo = "ALU";

                                //    txtBoleta.SetDTE.DTE.Documento.Detalle[index].CdgItem.VlrCodigo = tienda.Facturador.DifDespachoOtrosCodigo;
                                //    txtBoleta.SetDTE.DTE.Documento.Detalle[index].DscItem = "";
                                //    txtBoleta.SetDTE.DTE.Documento.Detalle[index].NmbItem = tienda.Facturador.DifDespachoOtros; ;
                                //    txtBoleta.SetDTE.DTE.Documento.Detalle[index].QtyItem = 1;
                                //    txtBoleta.SetDTE.DTE.Documento.Detalle[index].PrcItem = Convert.ToInt32(Math.Truncate(dif));
                                //    txtBoleta.SetDTE.DTE.Documento.Detalle[index].MontoItem = Convert.ToInt32(Math.Truncate(dif));

                                //}


                                //66666666-6

                                //REF PAra PAGOS y caja vendedor
                                txtBoleta.SetDTE.DTE.Documento.Referencia = new EnvioBOLETASetDTEDTEDocumentoReferencia[3];

                                txtBoleta.SetDTE.DTE.Documento.Referencia[0]           = new EnvioBOLETASetDTEDTEDocumentoReferencia();
                                txtBoleta.SetDTE.DTE.Documento.Referencia[0].NroLinRef = 1;
                                txtBoleta.SetDTE.DTE.Documento.Referencia[0].CodRef    = "CAJA";
                                txtBoleta.SetDTE.DTE.Documento.Referencia[0].RazonRef  = "";
                                txtBoleta.SetDTE.DTE.Documento.Referencia[0].CodVndor  = " Venta Web " + pedido.id;

                                //idVisual = pedido.comments;


                                txtBoleta.SetDTE.DTE.Documento.Referencia[0].CodCaja = "Orden N: " + pedido.comments;



                                txtBoleta.SetDTE.DTE.Documento.Referencia[1]           = new EnvioBOLETASetDTEDTEDocumentoReferencia();
                                txtBoleta.SetDTE.DTE.Documento.Referencia[1].NroLinRef = 2;
                                txtBoleta.SetDTE.DTE.Documento.Referencia[1].CodRef    = "PAGO";

                                txtBoleta.SetDTE.DTE.Documento.Referencia[1].RazonRef = "TOTAL PAGOS: " + pedido.Pagos.Sum(p => p.monto);


                                txtBoleta.SetDTE.DTE.Documento.Referencia[1].CodVndor = "";
                                txtBoleta.SetDTE.DTE.Documento.Referencia[1].CodCaja  = "";

                                txtBoleta.SetDTE.DTE.Documento.Referencia[2]           = new EnvioBOLETASetDTEDTEDocumentoReferencia();
                                txtBoleta.SetDTE.DTE.Documento.Referencia[2].NroLinRef = 3;
                                txtBoleta.SetDTE.DTE.Documento.Referencia[2].CodRef    = "MTO";
                                txtBoleta.SetDTE.DTE.Documento.Referencia[2].RazonRef  = email;//cliente.email
                                txtBoleta.SetDTE.DTE.Documento.Referencia[2].CodVndor  = "";
                                txtBoleta.SetDTE.DTE.Documento.Referencia[2].CodCaja   = "";

                                //Totales
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Totales          = new EnvioBOLETASetDTEDTEDocumentoEncabezadoTotales();
                                txtBoleta.SetDTE.DTE.Documento.Encabezado.Totales.MntTotal = Convert.ToInt32(pedido.total_amt);

                                txtBoleta.SetDTE.DTE.Documento.ID = "R" + txtBoleta.SetDTE.DTE.Documento.Encabezado.Emisor.RUTEmisor + "T" + Convert.ToString(txtBoleta.SetDTE.DTE.Documento.Encabezado.IdDoc.TipoDTE) + "F" + Convert.ToString(ResponseFolio.Folio);
                                txtBoleta.SetDTE.ID = "R" + txtBoleta.SetDTE.DTE.Documento.Encabezado.Emisor.RUTEmisor + "T" + Convert.ToString(txtBoleta.SetDTE.DTE.Documento.Encabezado.IdDoc.TipoDTE) + "F" + Convert.ToString(ResponseFolio.Folio);

                                string temp = txtBoleta.ToXML().Replace("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n", "");



                                ServiceFacturacionBES.ProcesarTXTBoleta ResponseBOL = WS.Carga_TXTBoleta(temp, "XML");

                                if (ResponseBOL.Estatus == 0)
                                {
                                    string rutaPdfBkp = ruta + @"\Pdfs";



                                    pedido.folio        = ResponseFolio.Folio;
                                    pedido.pdf          = ResponseBOL.PDF;
                                    pedido.ErrorDocElec = "PROCESADO OK";
                                    pedido.FechaDocele  = DateTime.Now;

                                    dbContex.SaveChanges();


                                    Log(temp, ruta + @"\LastBolXML.txt");

                                    //escribe PDF

                                    try
                                    {
                                        File.WriteAllBytes(rutaPdfBkp + @"\" + idVisual + "-BO-" + Convert.ToString(ResponseFolio.Folio) + ".pdf", ResponseBOL.PDF);
                                    }
                                    catch (Exception e)
                                    {
                                    }
                                }
                                else
                                {
                                    pedido.ErrorDocElec = "Estatus: " + Convert.ToString(ResponseBOL.Estatus) + " " + ResponseBOL.MsgEstatus;
                                    pedido.FechaDocele  = DateTime.Now;
                                    dbContex.SaveChanges();
                                    Log("Estatus: " + Convert.ToString(ResponseBOL.Estatus) + " " + ResponseBOL.MsgEstatus, ruta + @"\LastResponseBOLError.txt");
                                    Log(temp, ruta + @"\BolXMLError.txt");
                                }
                            }

                            catch (Exception ex0)
                            {
                                Log("ex0:" + ex0.Message + ex0.ToString() + " " + ex0.Message + " " + ex0.InnerException, ruta + @"\ErrorTXTBoleta.txt");
                            }
                        }
                        else
                        {
                            Log(Convert.ToString(ResponseFolio.Estatus) + " " + ResponseFolio.MsgEstatus, ruta + @"\LastResponseFolio.txt");
                        }
                    }


                    catch (Exception ex1)
                    {
                        Log("ex1:" + ex1.Message + ex1.ToString(), ruta + @"\LastError.txt");
                    }
                }// Ciclo foreach
            }
            catch (Exception ex)
            {
                Log("ex: " + ex.ToString() + ex.Message, ruta + @"\LastError.txt");
            }

            finally
            {
                dbContex.Dispose();
            }
        }