/// <summary> /// Ingresa los valores iniciales a la tabla /// </summary> private void Almacenar() { CAE cae; string valor; //Valida que la matriz contenga información. Si no tiene se ingresa los datos como registros nuevos if (matriz.RowCount == 0) { foreach (CAE.ESTipoCFECFC tipoCae in Enum.GetValues(typeof(CAE.ESTipoCFECFC))) { valor = CAE.ObtenerStringTipoCFECFC(tipoCae); //Crear nueva instanacia del mantenimiento de tipos de documentos a conservar ManteUdoDocCon manteUdoDocCon = new ManteUdoDocCon(); //Crea una nueva instancia del objeto cae cae = new CAE(); cae.TipoCFE = tipoCae; cae.NombreDocumento = CAE.ObtenerNombreCFECFC(((int)tipoCae).ToString()); cae.IndicadorConservar = "Y"; //Almacenar el registro manteUdoDocCon.Almacenar(cae); } } }
/// <summary> /// Actualiza los datos en la tabla de la base de datos /// </summary> public void Actualizar() { CAE cae; string numeroRegistro; //Actualizar data source matriz.FlushToDataSource(); //Crear nueva instanacia del mantenimiento de tipos de documentos a conservar ManteUdoDocCon manteUdoDocCon = new ManteUdoDocCon(); //Obtener valores del data source for (int i = 0; i < dbdsMatriz.Size; i++) { //Crear nuevo objeto cae cae = new CAE(); //Obtener valores por linea numeroRegistro = dbdsMatriz.GetValue("DocEntry", i); cae.TipoCFE = CAE.ObtenerTipoCFECFC(dbdsMatriz.GetValue("U_TipoDoc", i)); cae.NombreDocumento = dbdsMatriz.GetValue("U_NombDoc", i); cae.IndicadorConservar = dbdsMatriz.GetValue("U_IndCon", i); //Actualizar la información del registro recorrido manteUdoDocCon.Actualizar(cae, numeroRegistro); } }
/// <summary> /// Realiza el envio de los sobre por medio del web service de DGI. /// </summary> /// <param name="sobre"></param> public void EnviarSobre(Sobre sobre, Sobre sobreDgi, CFE cfe, CAE cae) { ParametrosJobWsDGI parametrosJobWsDGI = new ParametrosJobWsDGI(RUTA_CERTIFICADO, CLAVE_CERTIFICADO, URL_ENVIO, URL_CONSULTAS, cfe, cae); try { parametrosJobWsDGI.Sobre = sobre; parametrosJobWsDGI.SobreDgi = sobreDgi; comunicacionDGI.ConsumirWsEnviarSobre(parametrosJobWsDGI); } catch (Exception ex) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ERROR: " + ex.ToString()); } finally { //if (parametrosJobWsDGI != null) //{ // //Libera de memoria el objeto factura // GC.SuppressFinalize(parametrosJobWsDGI); // GC.Collect(); //} } }
/// <summary> /// Almacena un nuevo registro en la tabla de CAE's /// </summary> /// <param name="comp"></param> /// <param name="cae"></param> /// <returns></returns> public bool Almacenar(CAE cae, out string idCAE) { bool resultado = false; idCAE = ""; GeneralService servicioGeneral = null; GeneralData dataGeneral = null; try { //Obtener servicio general de la compañia servicioGeneral = ProcConexion.Comp.GetCompanyService().GetGeneralService("TTFECAE"); //Apuntar a la cabecera del udo dataGeneral = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralData); //Establecer los valores para las propiedades dataGeneral.SetProperty("U_TipoDoc", ((int)cae.TipoCFE).ToString()); dataGeneral.SetProperty("U_NombDoc", cae.NombreDocumento); dataGeneral.SetProperty("U_Sucursal", cae.Sucursal); dataGeneral.SetProperty("U_Caja", QuitarGuion(cae.Caja)); dataGeneral.SetProperty("U_Serie", cae.Serie.ToUpper()); dataGeneral.SetProperty("U_NumIni", cae.NumeroDesde.ToString()); dataGeneral.SetProperty("U_NumFin", cae.NumeroHasta.ToString()); dataGeneral.SetProperty("U_TipAut", cae.TipoAutorizacion); dataGeneral.SetProperty("U_NumAut", cae.NumeroAutorizacion); dataGeneral.SetProperty("U_ValDesde", cae.FechaEmision); dataGeneral.SetProperty("U_ValHasta", cae.FechaVencimiento); //Agregar el nuevo registro a la base de datos mediante el serivicio general servicioGeneral.Add(dataGeneral); //Consulta el DocEntry generado para el cae recien ingresado idCAE = ConsultarNumeroRangoCreado(cae); resultado = true; } catch (Exception) { } finally { if (dataGeneral != null) { //Liberar memoria utlizada por objeto dataGeneral System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral); System.GC.Collect(); } if (servicioGeneral != null) { //Liberar memoria utlizada por objeto servicioGeneral System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral); System.GC.Collect(); } } return(resultado); }
public EventosPagina(CFE pInfoComprobante, CAE pInfoCAE, string pDomicilioFiscal, string pLogo, string pDocNum) { this.infoCAE = pInfoCAE; this.infoComprobantes = pInfoComprobante; this.domicilioFiscal = pDomicilioFiscal; this.logo = pLogo; this.docNum = pDocNum; }
/// <summary> /// Actualiza los datos de un tipo de documento a conservar determinado /// </summary> /// <param name="comp"></param> /// <param name="cae"></param> /// <param name="numeroRegistro"></param> /// <returns></returns> public bool Actualizar(CAE cae, string numeroRegistro) { bool resultado = false; GeneralService servicioGeneral = null; GeneralData dataGeneral = null; GeneralDataParams parametros = null; try { //Obtener servicio general de la compañia servicioGeneral = ProcConexion.Comp.GetCompanyService().GetGeneralService("TTFETDCON"); //Obtener lista de parametros parametros = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralDataParams); //Establecer parametros parametros.SetProperty("DocEntry", numeroRegistro); //Apuntar al udo que corresponde con los parametros dataGeneral = servicioGeneral.GetByParams(parametros); //Establecer los valores para las propiedades dataGeneral.SetProperty("U_TipoDoc", ((int)cae.TipoCFE).ToString()); dataGeneral.SetProperty("U_NombDoc", cae.NombreDocumento); dataGeneral.SetProperty("U_IndCon", cae.IndicadorConservar); //Agregar el nuevo registro a la base de datos mediante el serivicio general servicioGeneral.Update(dataGeneral); resultado = true; } catch (Exception) { } finally { if (parametros != null) { //Liberar memoria utlizada por el objeto parametros System.Runtime.InteropServices.Marshal.ReleaseComObject(parametros); System.GC.Collect(); } if (dataGeneral != null) { //Liberar memoria utlizada por el objeto dataGeneral System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral); System.GC.Collect(); } if (servicioGeneral != null) { //Liberar memoria utlizada por el objeto servicioGeneral System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral); System.GC.Collect(); } } return(resultado); }
/// <summary> /// Toma los valores del formulario para almacenarlos en la base de datos. /// <para>0=Valores ingresados.</para> /// <para>1=Valores no ingresados.</para> /// <para>2=Valores no validos</para> /// <para>3=Rango no ingresado</para> /// </summary> /// <returns></returns> public int Almacenar() { bool resultado; string idCae; if (Validar()) { //Crea un nuevo objeto CAE CAE cae = new CAE(); //Obtiene el valor del tipo y el nombre del documento según la seleccion en el combo box cae.TipoCFE = CAE.ObtenerTipoCFECFC(((ComboBox)Formulario.Items.Item("cmbTipDoc").Specific).Selected.Value); cae.NombreDocumento = CAE.ObtenerNombreCFECFC(((ComboBox)Formulario.Items.Item("cmbTipDoc").Specific).Selected.Value); //Obtiene el nombre de la sucursal selccionada cae.Sucursal = ((ComboBox)Formulario.Items.Item("cmbSuc").Specific).Selected != null ? ((ComboBox)Formulario.Items.Item("cmbSuc").Specific).Selected.Value : ""; //Establece los otros valores del objeto cae con los valores ingresados en los campos de texto cae.Caja = ((EditText)Formulario.Items.Item("txtCaja").Specific).String; cae.Serie = ((EditText)Formulario.Items.Item("txtSerie").Specific).String; cae.NumeroDesde = int.Parse(((EditText)Formulario.Items.Item("txtNumIn").Specific).String); cae.NumeroHasta = int.Parse(((EditText)Formulario.Items.Item("txtNumFn").Specific).String); cae.TipoAutorizacion = ((EditText)Formulario.Items.Item("txtTipAut").Specific).String; cae.NumeroAutorizacion = ((EditText)Formulario.Items.Item("txtNumAut").Specific).String; cae.FechaEmision = ((EditText)Formulario.Items.Item("txtValDes").Specific).String; cae.FechaVencimiento = ((EditText)Formulario.Items.Item("txtValHa").Specific).String; //Crea nueva instancia de mantenimiento de CAE,s ManteUdoCAE manteUdoCae = new ManteUdoCAE(); resultado = manteUdoCae.Almacenar(cae, out idCae); if (resultado) { //Crear una nueva instancia de mantenimiento de rangos ManteUdoRango manteUdoRango = new ManteUdoRango(); //Creaer un nuevo objeto rango Rango rango = new Rango(cae.TipoCFE, cae.NumeroDesde, cae.NumeroHasta, cae.NumeroDesde, cae.Serie, cae.FechaEmision, cae.FechaVencimiento, idCae, "N"); //Alamcenar Rango en tabla de rangos if (manteUdoRango.Almacenar(rango)) { return(0);//Valores ingresados } else { return(3);//Rango no ingresado } } else { return(1);//Valores no ingresados } } return(2);//Valores no validos }
/// <summary> /// Metodo que genera un archivo Xml /// </summary> /// <returns></returns> public bool generarXml(CFE infoCFE, CAE infoCAE) { bool resultado = false; try { XDocument documentoXml = new XDocument( new XDeclaration("1.0", "UTF-8", string.Empty), new XElement("Comprobantes", new XElement("Comprobante", new XElement("ruc", infoCFE.RucEmisor.ToString()), new XElement("compania", infoCFE.NombreEmisor.ToString()), new XElement("serie", infoCFE.SerieComprobante.ToString()), new XElement("tipoCFE", infoCFE.TipoCFE.ToString()), new XElement("numero", infoCFE.NumeroComprobante.ToString()), new XElement("numeroCAE", infoCAE.NumeroAutorizacion.ToString()), new XElement("vencimientoCAE", infoCAE.FechaVencimiento.ToString()), new XElement("fechaEmision", infoCFE.FechaComprobante.ToString()), new XElement("fechaFirma", infoCFE.FechaHoraFirma.ToString()), new XElement("rangoDesde", infoCAE.NumeroDesde.ToString()), new XElement("rangoHasta", infoCAE.NumeroHasta.ToString()), new XElement("moneda", infoCFE.TipoModena.ToString()), new XElement("tasaBasica", infoCFE.TasaBasicaIVA.ToString()), new XElement("tasaMinima", infoCFE.TasaMinimaIVA.ToString()), new XElement("montoTotal", infoCFE.TotalMontoTotal.ToString()), new XElement("montoNoFacturable", infoCFE.MontoNoFacturable.ToString()), new XElement("montoTotalPagar", infoCFE.MontoTotalPagar.ToString()), new XElement("totalMontoNoGravado", infoCFE.TotalMontoNoGravado.ToString()), new XElement("codigoSeguridad", infoCFE.CodigoSeguridad), new XElement("IVATasaBAsica", infoCFE.TotalIVATasaBasica.ToString()), new XElement("netoIVATasaBasica", infoCFE.TotalMontoNetoIVATasaBasica.ToString()) ) ) ); if (!FrmEstadoContingencia.estadoContingencia.Equals("Y")) { rutaXml = RutasCarpetas.RutaCarpetaComprobantes + infoCFE.TipoCFEInt + infoCFE.SerieComprobante + infoCFE.NumeroComprobante + ".xml"; } else { rutaXml = RutasCarpetas.RutaCarpetaContingenciaComprobantes + infoCFE.TipoCFEInt + infoCFE.SerieComprobante + infoCFE.NumeroComprobante + ".xml"; } documentoXml.Save(rutaXml); resultado = true; } catch (Exception) { } return(resultado); }
/// <summary> /// Realiza la consulta de un rango CAE según el tipo de documento y la serie /// </summary> /// <param name="comp"></param> /// <param name="numeroRango"></param> /// <returns></returns> public CAE Consultar(string tipoDocumento, string serie) { Recordset recSet = null; string consulta = ""; CAE cae = null; try { //Obtener objeto estadar de record set recSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset); //Establecer consulta consulta = "SELECT T1.U_TipoDoc, U_NombDoc, T1.U_Serie, T1.U_NumIni, T1.U_NumFin, U_TipAut, U_NumAut, " + "CONVERT(VARCHAR(10), T1.U_ValDesde, 103) AS U_ValDesde, CONVERT(VARCHAR(10), T1.U_ValHasta, 103) " + " AS U_ValHasta, U_Sucursal, U_Caja FROM [@TFECAE] AS T1 INNER JOIN [@TFERANGO] AS T2 ON T1.DocEntry " + "= T2.U_IdCAE AND T2.U_Activo = 'Y' WHERE T1.U_TipoDoc = '" + tipoDocumento + "' AND T1.U_Serie = '" + serie + "'"; //Ejecutar consulta recSet.DoQuery(consulta); //Validar que se hayan obtenido resultado if (recSet.RecordCount > 0) { //Crear nuevo objeto CAE cae = new CAE(); //Establezco los valores del cae con los valores obtenidos en la consulta cae.TipoCFE = CAE.ObtenerTipoCFECFC(recSet.Fields.Item("U_TipoDoc").Value + ""); cae.NombreDocumento = CAE.ObtenerNombreCFECFC(recSet.Fields.Item("U_TipoDoc").Value + ""); cae.Sucursal = ""; // recSet.Fields.Item("U_Sucursal").Value + ""; cae.Caja = recSet.Fields.Item("U_Caja").Value + ""; cae.Serie = recSet.Fields.Item("U_Serie").Value + ""; cae.NumeroDesde = int.Parse(recSet.Fields.Item("U_NumIni").Value + ""); cae.NumeroHasta = int.Parse(recSet.Fields.Item("U_NumFin").Value + ""); cae.TipoAutorizacion = recSet.Fields.Item("U_TipAut").Value + ""; cae.NumeroAutorizacion = recSet.Fields.Item("U_NumAut").Value + ""; cae.FechaEmision = recSet.Fields.Item("U_ValDesde").Value + ""; cae.FechaVencimiento = recSet.Fields.Item("U_ValHasta").Value + ""; } } catch (Exception) { cae = null; } finally { if (recSet != null) { //Liberar memoria utlizada por servicioGeneral System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet); System.GC.Collect(); } } return(cae); }
/// <summary> /// Ejecuta una serie de tareas /// </summary> /// <param name="parametros"></param> private void EjecutarTareas(object parametros) { CFE cfe = parametros as CFE; CAE cae = AdminEventosUI.caePrueba; ObtenerFirmaDigital(); ObtenerUrlWebService(); cfe.CodigoSeguridad = CrearCertificado(cfe); //cfe.CodigoSeguridad = ObtenerCodigoSeguridad(cfe.TipoCFEInt + "" + cfe.SerieComprobante + "" + cfe.NumeroComprobante); #region Proceso_WebService ActualizarCodSeguridad(cfe); #endregion Proceso_WebService sobreDgi = CrearSobre(cfe, true); //Se genera el archivo xml ArchivoXml archXml = new ArchivoXml(); archXml.generarXml(cfe, cae); AlmacenarCFECreado(cfe); sobre = CrearSobre(cfe, false); double topeUI = Convert.ToDouble(ValorUI.valorUI * 10000, System.Globalization.CultureInfo.InvariantCulture); // if (!FrmEstadoContingencia.estadoContingencia.Equals("Y")) // { if ((cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.ETicket)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.ETicketContingencia)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NCETicket)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NCETicketContingencia)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NDETicket)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NDETicketContingencia))) { if (cfe.TipoModena.Equals("UYU") || cfe.TipoModena.Equals("$")) { if (ValorUI.valorUI * 10000 < (cfe.TotalMontoTotal - cfe.TotalIVATasaMinima - cfe.TotalIVATasaBasica)) { EnviarSobre(sobre, sobreDgi, cfe, cae); } } else { if (ValorUI.valorUI * 10000 < (cfe.TotalMontoTotal - cfe.TotalIVATasaMinima - cfe.TotalIVATasaBasica) * cfe.TipoCambio) { EnviarSobre(sobre, sobreDgi, cfe, cae); } } } else { //Enviar sobre a DGI EnviarSobre(sobre, sobreDgi, cfe, cae); } // } }
private void enviarNC(int numeroDocumento, string formaPago, string adenda, string razonRef) { AdminEventosUI eventos = new AdminEventosUI(true); NotaCreditoB1 notaCreditoB1 = new NotaCreditoB1(); DatosPDF datosPdf = new DatosPDF(); datosPdf = DocumentoB1.ObtenerkilosFactura(numeroDocumento, "RIN1", datosPdf); datosPdf = DocumentoB1.ObtenerDatosPDF(numeroDocumento, "ORIN", datosPdf); datosPdf.NombreVendedor = DocumentoB1.ObtenerNombreVendedor(numeroDocumento, "ORIN"); datosPdf.NombreExtranjero = DocumentoB1.ObtenerNombreExtranjero(numeroDocumento, "ORIN"); datosPdf.Titular = DocumentoB1.Titular(numeroDocumento, "ORIN"); datosPdf = DocumentoB1.ObtenerDatosDireccion(datosPdf); datosPdf = DocumentoB1.ActualizarEstado(datosPdf); datosPdf = DocumentoB1.ActualizarCodigo(datosPdf); datosPdf = DocumentoB1.ActualizarNumPedido(datosPdf); datosPdf.FormaPago = formaPago; //Obtener el objeto cfe a partir de los datos del documento creado cfe = notaCreditoB1.ObtenerDatosNotaCredito(numeroDocumento, Objetos.CAE.ESTipoCFECFC.NCEFactura, formaPago, adenda, razonRef); if (cfe != null) { if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { //Obtener el objeto cae utilizado en el documento creado cae = manteUdoCae.Consultar("999", cfe.SerieComprobante); } else { //Obtener el objeto cae utilizado en el documento creado cae = manteUdoCae.Consultar(cfe.TipoCFEInt.ToString(), cfe.SerieComprobante); } //Actualizar datos del CFE en el documento creado notaCreditoB1.ActualizarDatosCFENotaCredito(int.Parse(cfe.DocumentoSAP), cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), cfe.InfoReferencia); DocumentoB1.ActualizarCAEAsiento(int.Parse(datosPdf.DocNum), cfe.TipoCFEInt.ToString(), cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), "14", ""); datosPdf.DescuentoGeneral = NotaCreditoB1.descuentoGeneral; datosPdf.DescuentoExtranjero = NotaCreditoB1.descuentoGeneralExtranjero; datosPdf.PorcentajeDescuento = NotaCreditoB1.porcentajeDescuento; eventos.EnviarDocumento(cfe, cae, datosPdf, "RIN1", null, "ORIN"); //Cambio el estado a Procesado para no volver a enviarlo notaCreditoB1.ActualizarEstadoDocumento(numeroDocumento, PROCESADO, cfe.CodigoSeguridad); cfe = null; cae = null; } }
/// <summary> /// Consulta el DocEntry del un rango en especifico /// </summary> /// <param name="comp"></param> /// <returns></returns> private string ConsultarNumeroRangoCreado(CAE cae) { Recordset recSet = null; string consulta = ""; string DocEntryObtenido = ""; try { //Obtener objeto estadar de record set recSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset); //Establecer consulta consulta = "SELECT DocEntry FROM [@TFECAE] WHERE U_NumAut = '" + cae.NumeroAutorizacion + "' AND U_TipoDoc = '" + ((int)cae.TipoCFE) + "' AND U_Serie = '" + cae.Serie + "'"; //consulta = "SELECT DocEntry FROM [@TFECAE] WHERE U_NumAut = '" + cae.NumeroAutorizacion + "' AND"; //Ejecutar consulta recSet.DoQuery(consulta); //Validar que se hayan obtenido resultado if (recSet.RecordCount > 0) { DocEntryObtenido = recSet.Fields.Item("DocEntry").Value + ""; } } catch (Exception) { } finally { if (recSet != null) { //Liberar memoria utlizada por servicioGeneral System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet); System.GC.Collect(); } } return(DocEntryObtenido); }
/// <summary> /// Realiza la consulta de un rango determinado desde la base de datos y carga los valores en los campos correspondientes /// </summary> /// <param name="numeroRango"></param> private void Consultar(string numeroRango) { //Crear nuevo objeto CAE CAE cae = new CAE(); //Crea nueva instancia de mantenimiento de CAE,s ManteUdoCAE manteUdoCae = new ManteUdoCAE(); //Consultar rango por numero cae = manteUdoCae.Consultar(numeroRango); //Validar que se hayan obtenido valores if (cae != null) { //Congelar formulario Formulario.Freeze(true); //Posicionar valor del combo box de tipos de documentos ((ComboBox)Formulario.Items.Item("cmbTipDoc").Specific).Select(CAE.ObtenerStringTipoCFECFC(cae.TipoCFE), BoSearchKey.psk_ByValue); //Posicionar valor del combo box de tipos de documentos ((ComboBox)Formulario.Items.Item("cmbSuc").Specific).Select(cae.Sucursal, BoSearchKey.psk_ByValue); //Ingresar los valores en los respectivos campos de texto ((EditText)Formulario.Items.Item("txtCaja").Specific).String = cae.Caja; ((EditText)Formulario.Items.Item("txtSerie").Specific).String = cae.Serie; ((EditText)Formulario.Items.Item("txtNumIn").Specific).String = cae.NumeroDesde.ToString(); ((EditText)Formulario.Items.Item("txtNumFn").Specific).String = cae.NumeroHasta.ToString(); ((EditText)Formulario.Items.Item("txtTipAut").Specific).String = cae.TipoAutorizacion; ((EditText)Formulario.Items.Item("txtNumAut").Specific).String = cae.NumeroAutorizacion; ((EditText)Formulario.Items.Item("txtValDes").Specific).String = cae.FechaEmision; ((EditText)Formulario.Items.Item("txtValHa").Specific).String = cae.FechaVencimiento; //Descongelar formulario Formulario.Freeze(false); } }
/// <summary> /// Metodo que llama a la generacion de documentos de tipo pdf /// Firmados digitalmente /// </summary> /// <param name="cfe"></param> /// <param name="cae"></param> /// <param name="kilosFactura"></param> /// <param name="tabla"></param> /// <param name="descuentoGeneral"></param> public void CrearPDF(CFE cfe, CAE cae, DatosPDF datosPdf, string tabla, List <ResguardoPdf> resguardoPdf, string tablaCabezal) { try { if (cae != null) { RutasCarpetas rutas = new RutasCarpetas(); rutas.generarCarpetas(); //Llamada a metodo para comprobar si hay datos de firma digital ObtenerFirmaDigital(); //Crear instancia de Pdfs pdfs = new PDFs(cfe, cae, datosPdf.KilosFactura); ////Se genera el archivo xml //ArchivoXml archXml = new ArchivoXml(); //archXml.generarXml(cfe, cae); //Crear pdf y validar creacion #region Proceso_WebService if (pdfs.CrearPDF(tabla, datosPdf, resguardoPdf, tablaCabezal)) //if (pdfs.CrearPDF(tabla, datosPdf, resguardoPdf, tablaCabezal, cfe.OrigenFE)) *** Se comenta porque se hace esto para todos los casos! #endregion Proceso_WebService { if (EventosPagina.errorRutaLogo) { //Se informa al usuario de que la ruta especificada para el logo es incorrecta app.MessageBox(Mensaje.errRutaLogoIncorrecta); EventosPagina.errorRutaLogo = false; } if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { AdminEventosUI.mostrarMensaje(Mensaje.sucFactura, AdminEventosUI.tipoMensajes.exito); } else { AdminEventosUI.mostrarMensaje(Mensaje.sucFacturaCorreo, AdminEventosUI.tipoMensajes.exito); } } else { if (!EventosPagina.errorRutaLogo && !PDFs.errorCertificado && !PDFs.errorFirma && !PDFs.errorCorreo && !PDFs.errorImprimir) { AdminEventosUI.mostrarMensaje(Mensaje.errFalloGenerarPdf, AdminEventosUI.tipoMensajes.error); } if (EventosPagina.errorRutaLogo) { AdminEventosUI.mostrarMensaje(Mensaje.errRutaLogoIncorrecta, AdminEventosUI.tipoMensajes.error); EventosPagina.errorRutaLogo = false; } if (PDFs.errorCertificado) { AdminEventosUI.mostrarMensaje(Mensaje.errDatosNoConfigurados, AdminEventosUI.tipoMensajes.error); PDFs.errorCertificado = false; } if (PDFs.errorFirma) { AdminEventosUI.mostrarMensaje(Mensaje.errFalloFirmaPdf, AdminEventosUI.tipoMensajes.error); PDFs.errorFirma = false; } if (PDFs.errorCorreo) { if (Mail.errorCorreo.Equals("")) { AdminEventosUI.mostrarMensaje(Mensaje.errConfErroneaCorreo, AdminEventosUI.tipoMensajes.error); } else { AdminEventosUI.mostrarMensaje(Mensaje.err + Mail.errorCorreo, AdminEventosUI.tipoMensajes.error); } PDFs.errorCorreo = false; } if (PDFs.errorImprimir) { AdminEventosUI.mostrarMensaje(Mensaje.errFalloImprimirPdf, AdminEventosUI.tipoMensajes.error); PDFs.errorImprimir = false; } } } else { AdminEventosUI.mostrarMensaje(Mensaje.errConfErroneaCae, AdminEventosUI.tipoMensajes.error); } } catch (Exception ex) { app.MessageBox("JobEnvioSobre/Error: " + ex.ToString()); } }
public void runFunction() { System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); #region Создание общей папки folder.generalFolder = (param.r2 * 2).ToString(); if (!Directory.Exists(folder.generalFolder)) { Directory.CreateDirectory(folder.generalFolder); } #endregion string abaqusOutputFolder = Convert.ToString(param.r3 * 2) + "(d3)" + Convert.ToString(param.a) + "(angle)"; folder.outputFolder = Path.Combine(folder.generalFolder, abaqusOutputFolder); if (!Directory.Exists(folder.outputFolder)) { Directory.CreateDirectory(folder.outputFolder); } #region Пути для солида rout.stampFolder = Path.Combine(Environment.CurrentDirectory, folder.outputFolder, file.stamp); rout.stampFolder = rout.stampFolder.Replace(@"\", "/"); rout.blankFolder = Path.Combine(Environment.CurrentDirectory, folder.outputFolder, file.blank); rout.blankFolder = rout.blankFolder.Replace(@"\", "/"); rout.platformFolder = Path.Combine(Environment.CurrentDirectory, folder.outputFolder, file.platform); rout.platformFolder = rout.platformFolder.Replace(@"\", "/"); rout.ring1Folder = Path.Combine(Environment.CurrentDirectory, folder.outputFolder, file.ring1); rout.ring1Folder = rout.ring1Folder.Replace(@"\", "/"); rout.ring2Folder = Path.Combine(Environment.CurrentDirectory, folder.outputFolder, file.ring2); rout.ring2Folder = rout.ring2Folder.Replace(@"\", "/"); #endregion rout.workingDirectory = folder.outputFolder; double r1 = 20; double temp = Math.Tan((90 - param.a) * Math.PI / 180); double h3 = Math.Tan((90 - param.a) * Math.PI / 180) * (r1 - param.r2); double h3Volume = (Math.PI * h3 * (Math.Pow(r1, 2) + r1 * param.r2 + Math.Pow(param.r2, 2))) / 3; double h4 = 15; double h4Volume = Math.PI * Math.Pow(param.r2, 2) * h4; double h5 = Math.Tan((90 - param.a) * Math.PI / 180) * (param.r2 - param.r3); double h5Volume = (Math.PI * h5 * (Math.Pow(param.r2, 2) + param.r2 * param.r3 + Math.Pow(param.r3, 2))) / 3; double h6 = h4; double h6Volume = Math.PI * Math.Pow(param.r3, 2) * h6; double blankVolume = h3Volume + h4Volume + h5Volume + h6Volume; param.blankHeight = blankVolume / (Math.PI * Math.Pow(r1, 2)); param.goodBlankPosition = ((h3 + 85) + 15) + (h5); param.goodBlankPosition = Math.Round(param.goodBlankPosition, 2); param.badBlankPosition = param.goodBlankPosition + param.blankHeight; param.badBlankPosition = Math.Round(param.badBlankPosition, 2); param.platformPosition = param.badBlankPosition + param.blankHeight; param.platformPosition = Math.Round(param.platformPosition, 2); param.displacement = (param.blankHeight * 2) / 0.05; param.displacement = Math.Round(param.displacement, 1); var solid = new CAD(); solid.UseSolid(file, param, rout); change.ChangeWordsInFile(rout, folder, file, param); var abaqus = new CAE(); abaqus.runAbaqus(rout, cmd); change.RewriteExtract(rout, folder, file, param); var run = new DataProcessing(rout, cmd); run.Processing(file, param); }
public CFE ObtenerDatosResguardo(int numResguardo, CAE.ESTipoCFECFC tipoCFE, string adenda) { Documents resguardoCompras = null; CFE cfe = new CFE(); CFEItems item; Emisor emisor; Rango rango = null; CFEMediosPago mediosPago; CAE cae; descuentoGeneral = 0; descuentoGeneralExtranjero = 0; try { resguardoCompras = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.oPurchaseInvoices); resguardoCompras.GetByKey(numResguardo); #region EMISOR emisor = this.ObtenerDatosEmisor() as Emisor; cfe.RucEmisor = emisor.Ruc; cfe.NombreEmisor = emisor.Nombre; cfe.NombreComercialEmisor = emisor.NombreComercial; cfe.NumeroResolucion = emisor.NumeroResolucion; cfe.CodigoCasaPrincipalEmisor = this.ObtenerSucursal(resguardoCompras.DocEntry.ToString(), TABLA_RESGUARDO_COMPRA); cfe.CajaEmisor = this.ObtenerCaja(resguardoCompras.DocEntry.ToString(), TABLA_RESGUARDO_COMPRA); cfe.DomicilioFiscalEmisor = this.ObtenerDireccionEmisor(); cfe.CiuidadEmisor = this.ObtenerCiudadEmisor(); cfe.DocumentoSAP = resguardoCompras.DocEntry.ToString(); cfe.EstadoDGI = CFE.ESEstadoCFE.PendienteDGI; cfe.EstadoReceptor = CFE.ESEstadoCFE.PendienteReceptor; #endregion EMISOR #region RECEPTOR cfe.TipoDocumentoReceptor = CFE.ObtenerTipoDocumentoReceptor(resguardoCompras.UserFields.Fields.Item("U_TipDocFA").Value); cfe.CodigoPaisReceptor = this.ObtenerCodPaisReceptor(resguardoCompras.CardCode, cfe.TipoDocumentoReceptor); cfe.NombreReceptor = resguardoCompras.CardName; if (cfe.PaisReceptor.Equals("UY")) { cfe.NumDocReceptorUruguayo = resguardoCompras.UserFields.Fields.Item("U_ValDocFA").Value; } else { cfe.NumDocReceptorExtrangero = resguardoCompras.UserFields.Fields.Item("U_ValDocFA").Value; } //cfe.CiuidadReceptor = resguardoCompras.Address.Replace("\r", ""); cfe.CiuidadReceptor = this.ObtenerCiudad(resguardoCompras.DocEntry, "PCH12"); cfe.PaisReceptor = this.ObtenerNombPaisReceptor(resguardoCompras.CardCode); cfe.CorreoReceptor = this.ObtenerCorreoReceptor(resguardoCompras.CardCode); //cfe.DireccionReceptor = cfe.CiuidadReceptor;// +" " + cfe.PaisReceptor; cfe.DireccionReceptor = this.ObtenerCiudad(resguardoCompras.DocEntry, "PCH12"); cfe.NumeroCompraReceptor = this.ObtenerNroPedidoReceptor(resguardoCompras.DocEntry, TABLA_RESGUARDO_COMPRA); #endregion RECEPTOR #region TOTALES ENCABEZADO cfe.TipoModena = this.ObtenerCodigoISOModena(resguardoCompras.DocCurrency); ManteUdoTipoCambio manteUdoTipoCambio = new ManteUdoTipoCambio(); string temp = "", confTC = manteUdoTipoCambio.ObtenerConfiguracion(out temp); if (confTC.Equals("N")) { double docRate = this.ObtenerDocRate(); if (cfe.TipoModena == "UYU" || cfe.TipoModena == "UY") { cfe.TipoCambio = 1; } else { if (docRate > 0) { cfe.TipoCambio = 1 / docRate; cfe.TipoCambio = Math.Round(cfe.TipoCambio, 2); } } } else { cfe.TipoCambio = resguardoCompras.DocRate; } cfe.Lineas = resguardoCompras.Lines.Count; //CFERetencPercep retPer = ObtenerRetencionPercepcion(resguardoCompras.DocEntry.ToString(), "PCH5") as CFERetencPercep; //cfe.AgregarRetencPercep(retPer); List <CFERetencPercep> listretPer = ObtenerRetencionPercepcion(resguardoCompras.DocEntry.ToString(), "PCH5", resguardoCompras.DocCurrency.ToString()) as List <CFERetencPercep>; // SE CARGA EN VLORES de reneciones for (int i = 0; i < listretPer.Count; i++) { cfe.AgregarRetencPercep(listretPer[i]); } #endregion TOTALES ENCABEZADO #region ITEMS List <CFEItemsRetencPercep> listaItemRecPerc = this.ObtenerItemRetencionPercepcion(resguardoCompras.DocEntry.ToString(), "PCH5", resguardoCompras.DocCurrency.ToString()) as List <CFEItemsRetencPercep>; for (int i = 0; i < listaItemRecPerc.Count; i++) { //Nueva instancia del objeto item de cfe item = cfe.NuevoItem(); item.AgregarItemRetencPercep(listaItemRecPerc[i]); item.IndicadorFacturacion = 4; item.NumeroLinea = i + 1; cfe.AgregarItem(item); } descuentoGeneral = resguardoCompras.TotalDiscount; descuentoGeneralExtranjero = resguardoCompras.TotalDiscountFC; cfe.Lineas = listaItemRecPerc.Count; #endregion ITEMS #region MEDIOS DE PAGO mediosPago = cfe.NuevoMediosPago(); mediosPago.Glosa = this.ObtenerMedioPago(resguardoCompras.DocEntry.ToString(), TABLA_RESGUARDO_COMPRA); cfe.AgregarMediosPago(mediosPago); #endregion MEDIOS DE PAGO descuentoGeneral = resguardoCompras.TotalDiscount; descuentoGeneralExtranjero = resguardoCompras.TotalDiscountFC; #region IDENTIFICACION DEL COMPROBANTE //Valida que el documento sea de contingencia if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.EResguardoContingencia)); } //Si no es contingencia else { cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.EResguardo)); rango = this.ObtenerDatosRangoCFE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.EResguardo), cfe.CodigoCasaPrincipalEmisor.ToString(), cfe.CajaEmisor) as Rango; } //Estado de contigencia serie y numero se ingresan manualmente if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { Item txtNumCFE = SAPbouiCOM.Framework.Application.SBO_Application.Forms.ActiveForm.Items.Item("txtNumCFE"); Item txtSeCFE = SAPbouiCOM.Framework.Application.SBO_Application.Forms.ActiveForm.Items.Item("txtSeCFE"); cfe.SerieComprobante = ((SAPbouiCOM.EditText)txtSeCFE.Specific).Value + ""; cfe.NumeroComprobante = int.Parse((((SAPbouiCOM.EditText)txtNumCFE.Specific).Value + "")) + 1; } else { if (rango != null) { cfe.SerieComprobante = rango.Serie; cfe.NumeroComprobante = rango.NumeroActual; } } cfe.FechaComprobante = resguardoCompras.DocDate.ToString("yyyy-MM-dd"); cfe.FechaVencimiento = resguardoCompras.DocDueDate.ToString("yyyy-MM-dd"); if (resguardoCompras.DocType == BoDocumentTypes.dDocument_Items) { cfe.TipoDocumentoSAP = CFE.ESTIpoDocumentoSAP.Articulo; } else if (resguardoCompras.DocType == BoDocumentTypes.dDocument_Service) { cfe.TipoDocumentoSAP = CFE.ESTIpoDocumentoSAP.Servicio; } if (resguardoCompras.DocumentStatus == BoStatus.bost_Close) { cfe.FormaPago = CFE.ESFormaPago.Contado; } else { cfe.FormaPago = CFE.ESFormaPago.Credito; } #endregion IDENTIFICACION DEL COMPROBANTE #region ADENDA //ManteUdoAdenda manteUdoAdenda = new ManteUdoAdenda(); //Adenda adenda = manteUdoAdenda.ObtenerAdenda(ProcConexion.Comp, Adenda.ESTipoObjetoAsignado.TipoCFE111, resguardo.DocNum.ToString()); //if (tipoCFE == CAE.ESTipoCFECFC.EResguardo) //{ // resguardo.UserFields.Fields.Item("U_AdendaRG").Value = adenda.CadenaAdenda;// resguardo.UserFields.Fields.Item("U_AdendaFA").Value; // resguardo.Update(); //} //cfe.TextoLibreAdenda = adenda.CadenaAdenda; //cfe.TextoLibreAdenda = resguardo.UserFields.Fields.Item("U_AdendaFA").Value; cfe.TextoLibreAdenda = adenda; #endregion ADENDA #region DOCUMENTOS DE REFENCIA List <CFEInfoReferencia> listaRef = this.ObtenerReferenciaResguardo(resguardoCompras.DocEntry.ToString(), TABLA_RESGUARDO_COMPRA) as List <CFEInfoReferencia>; for (int i = 0; i < listaRef.Count; i++) { cfe.AgregarInfoReferencia(listaRef[i]); } #endregion DOCUMENTOS DE REFENCIA #region CAE //Valida que el documento sea de contingencia if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.Contingencia)) as CAE; }//Si no es contingencia else { cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.EResguardo)) as CAE; } if (cae.NumeroAutorizacion != null) { cfe.NumeroCAE = long.Parse(cae.NumeroAutorizacion); cfe.NumeroInicialCAE = cae.NumeroDesde; cfe.NumeroFinalCAE = cae.NumeroHasta; cfe.FechaVencimientoCAE = cae.FechaVencimiento; ManteDocumentos manteDocumentos = new ManteDocumentos(); FinCae finCae = manteDocumentos.ObtenerAlertaCAE(); if ((cae.NumeroHasta - rango.NumeroActual) <= finCae.Cantidad) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox ("!!!Atención!!! Rango utilizado: " + rango.NumeroActual + " de: " + cae.NumeroHasta + ". Solicitar Nuevos CAEs a DGI."); } DateTime fechaVencimiento = DateTime.Parse(cae.FechaVencimiento); TimeSpan diferenciaDias = DateTime.Now.Subtract(fechaVencimiento); int diasFecha = int.Parse(diferenciaDias.Days.ToString()); if (diasFecha > 0 && finCae.Dias != 0) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox ("!!!Atención!!! El rango se venció, fecha de vencimiento: " + cae.FechaVencimiento); } else { diasFecha = diasFecha * -1; if (diasFecha <= finCae.Dias && finCae.Dias != 0) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox ("!!!Atención!!! El rango se va vencer, fecha de vencimiento: " + cae.FechaVencimiento); } } } else { cfe = null; } #endregion CAE } catch (Exception ex) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ResguardoCompra/Error: " + ex.ToString()); } finally { if (resguardoCompras != null) { //Libera de memoria el objeto resguardoCompras System.Runtime.InteropServices.Marshal.ReleaseComObject(resguardoCompras); GC.Collect(); } } return(cfe); }
/// <summary> /// Constructor de la clase /// </summary> /// <param name="_infoComprobante"></param> /// <param name="_infoCAE"></param> public PDFs(CFE _infoComprobante, CAE _infoCAE, string _kilosComprobante) { this.infoComprobante = _infoComprobante; this.infoCAE = _infoCAE; this.kilosComprobante = _kilosComprobante; }
private void enviarFactura(int numeroDocumento, string formaPago, string adenda) { AdminEventosUI eventos = new AdminEventosUI(true); FacturaB1 facturaB1 = new FacturaB1(); DatosPDF datosPdf = new DatosPDF(); datosPdf = DocumentoB1.ObtenerkilosFactura(numeroDocumento, "INV1", datosPdf); datosPdf = DocumentoB1.ObtenerDatosPDF(numeroDocumento, "OINV", datosPdf); datosPdf.NombreVendedor = DocumentoB1.ObtenerNombreVendedor(numeroDocumento, "OINV"); datosPdf.NombreExtranjero = DocumentoB1.ObtenerNombreExtranjero(numeroDocumento, "OINV"); datosPdf.Titular = DocumentoB1.Titular(numeroDocumento, "OINV"); datosPdf = DocumentoB1.ObtenerDatosDireccion(datosPdf); datosPdf = DocumentoB1.ActualizarEstado(datosPdf); //Saint datosPdf = DocumentoB1.ActualizarCodigo(datosPdf); //Saint datosPdf = DocumentoB1.ActualizarNumPedido(datosPdf); //Obtener el objeto cfe a partir de los datos del documento creado cfe = facturaB1.ObtenerDatosFactura(numeroDocumento, Objetos.CAE.ESTipoCFECFC.EFactura, formaPago, adenda); if (cfe != null) { if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { cae = manteUdoCae.Consultar("999", cfe.SerieComprobante); } else { cae = manteUdoCae.Consultar(cfe.TipoCFEInt.ToString(), cfe.SerieComprobante); } //Actualizar datos del CFE en el documento creado facturaB1.ActualizarDatosCFEFActura(int.Parse(cfe.DocumentoSAP), cfe.SerieComprobante, cfe.NumeroComprobante.ToString()); DocumentoB1.ActualizarCAEAsiento(int.Parse(datosPdf.DocNum), cfe.TipoCFEInt.ToString(), cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), "13", "F"); datosPdf.DescuentoGeneral = FacturaB1.descuentoGeneral; datosPdf.DescuentoExtranjero = FacturaB1.descuentoGeneralExtranjero; datosPdf.PorcentajeDescuento = FacturaB1.porcentajeDescuento; eventos.EnviarDocumento(cfe, cae, datosPdf, "INV1", null, "OINV"); //Cambio el estado a Procesado para no volver a enviarlo facturaB1.ActualizarEstadoDocumento(numeroDocumento, PROCESADO, cfe.CodigoSeguridad); cfe = null; cae = null; //Valida que el documento sea un resguardo if (manteDocumentos.ValidarDocumentoResguardo(numeroDocumento, "INV5")) { ResguardoB1 resguardoB1 = new ResguardoB1(); //Obtener el objeto cfe a partir de los datos del documento creado cfe = resguardoB1.ObtenerDatosResguardo(numeroDocumento, Objetos.CAE.ESTipoCFECFC.ERemito); List <ResguardoPdf> resguardoPdf = DocumentoB1.ObtenerResguardoPdf(numeroDocumento, "OINV", "INV1", "INV5"); if (cfe != null) { if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { //Obtener el objeto cae utilizado en el documento creado cae = manteUdoCae.Consultar("999", cfe.SerieComprobante); } else { //Obtener el objeto cae utilizado en el documento creado cae = manteUdoCae.Consultar(cfe.TipoCFEInt.ToString(), cfe.SerieComprobante); } //Actualizar datos del CFE en el documento creado resguardoB1.ActualizarDatosCFEResguardo(int.Parse(cfe.DocumentoSAP), cfe.SerieComprobante, cfe.NumeroComprobante.ToString()); datosPdf.DescuentoGeneral = ResguardoB1.descuentoGeneral; datosPdf.DescuentoExtranjero = ResguardoB1.descuentoGeneralExtranjero; eventos.EnviarDocumento(cfe, cae, datosPdf, "INV1", resguardoPdf, "OINV"); //Cambio el estado a Procesado para no volver a enviarlo resguardoB1.ActualizarEstadoDocumento(numeroDocumento, PROCESADO, cfe.CodigoSeguridad); cfe = null; cae = null; } } } }
/// <summary> /// Actualiza los datos de un rango determinado /// </summary> /// <param name="comp"></param> /// <param name="cae"></param> /// <param name="numeroRango"></param> /// <returns></returns> public bool Actualizar(CAE cae, string numeroRango) { bool resultado = false; GeneralService servicioGeneral = null; GeneralData dataGeneral = null; GeneralDataParams parametros = null; try { //Obtener servicio general de la compañia servicioGeneral = ProcConexion.Comp.GetCompanyService().GetGeneralService("TTFECAE"); //Obtener lista de parametros parametros = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralDataParams); //Establecer parametros parametros.SetProperty("DocEntry", numeroRango); //Apuntar al udo que corresponde con los parametros dataGeneral = servicioGeneral.GetByParams(parametros); //Establecer los valores para las propiedades dataGeneral.SetProperty("U_TipoDoc", ((int)cae.TipoCFE).ToString()); dataGeneral.SetProperty("U_NombDoc", cae.NombreDocumento); dataGeneral.SetProperty("U_Sucursal", cae.Sucursal); dataGeneral.SetProperty("U_Caja", QuitarGuion(cae.Caja)); dataGeneral.SetProperty("U_Serie", cae.Serie.ToUpper()); dataGeneral.SetProperty("U_NumIni", cae.NumeroDesde.ToString()); dataGeneral.SetProperty("U_NumFin", cae.NumeroHasta.ToString()); dataGeneral.SetProperty("U_TipAut", cae.TipoAutorizacion); dataGeneral.SetProperty("U_NumAut", cae.NumeroAutorizacion); dataGeneral.SetProperty("U_ValDesde", cae.FechaEmision); dataGeneral.SetProperty("U_ValHasta", cae.FechaVencimiento); //Agregar el nuevo registro a la base de datos mediante el serivicio general servicioGeneral.Update(dataGeneral); resultado = true; } catch (Exception) { } finally { if (servicioGeneral != null) { //Liberar memoria utlizada por objeto servicioGeneral System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral); System.GC.Collect(); } if (dataGeneral != null) { //Liberar memoria utlizada por objeto dataGeneral System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral); System.GC.Collect(); } if (parametros != null) { //Liberar memoria utlizada por objeto parametros System.Runtime.InteropServices.Marshal.ReleaseComObject(parametros); System.GC.Collect(); } } return(resultado); }
public CFE ObtenerDatosNotaDebito(int numNotaDebito, CAE.ESTipoCFECFC tipoCFE, string formaPago, string adenda, string razonRef) { Documents notaDebito = null; CFE cfe = new CFE(); CFEInfoReferencia cfeReferencia; CFEItems item; Emisor emisor; Rango rango = null; CFEMediosPago mediosPago; CAE cae; descuentoGeneral = 0; descuentoGeneralExtranjero = 0; porcentajeDescuento = 0; try { notaDebito = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.oInvoices); notaDebito.GetByKey(numNotaDebito); //Actualiza la forma de pagos notaDebito.UserFields.Fields.Item("U_U_FrmPagOIN").Value = formaPago; notaDebito.Update(); #region EMISOR emisor = this.ObtenerDatosEmisor() as Emisor; cfe.RucEmisor = emisor.Ruc; cfe.NombreEmisor = emisor.Nombre; cfe.NombreComercialEmisor = emisor.NombreComercial; cfe.NumeroResolucion = emisor.NumeroResolucion; cfe.CodigoCasaPrincipalEmisor = this.ObtenerSucursal(notaDebito.DocEntry.ToString(), TABLA_NOTA_DEBITO); cfe.CajaEmisor = this.ObtenerCaja(notaDebito.DocEntry.ToString(), TABLA_NOTA_DEBITO); cfe.DomicilioFiscalEmisor = this.ObtenerDireccionEmisor(); cfe.CiuidadEmisor = this.ObtenerCiudadEmisor(); cfe.DocumentoSAP = notaDebito.DocEntry.ToString(); cfe.EstadoDGI = CFE.ESEstadoCFE.PendienteDGI; cfe.EstadoReceptor = CFE.ESEstadoCFE.PendienteReceptor; #endregion EMISOR #region RECEPTOR cfe.TipoDocumentoReceptor = CFE.ObtenerTipoDocumentoReceptor(notaDebito.UserFields.Fields.Item("U_TipDocND").Value); cfe.CodigoPaisReceptor = this.ObtenerCodPaisReceptor(notaDebito.CardCode, cfe.TipoDocumentoReceptor); cfe.NombreReceptor = notaDebito.CardName; if (cfe.PaisReceptor.Equals("UY")) { cfe.NumDocReceptorUruguayo = notaDebito.UserFields.Fields.Item("U_ValDocND").Value; } else { cfe.NumDocReceptorExtrangero = notaDebito.UserFields.Fields.Item("U_ValDocND").Value; ManteUdoAdobe manteUdoAdobe = new ManteUdoAdobe(); string ciGenereico = manteUdoAdobe.ObtenerCiGenerico(); if (cfe.NumDocReceptorExtrangero.Equals(ciGenereico)) { cfe.NumDocReceptorExtrangero = "00000000"; } } //cfe.CiuidadReceptor = notaDebito.Address.Replace("\r", ""); cfe.CiuidadReceptor = this.ObtenerCiudad(notaDebito.DocEntry, "INV12"); cfe.PaisReceptor = this.ObtenerNombPaisReceptor(notaDebito.CardCode); cfe.CorreoReceptor = this.ObtenerCorreoReceptor(notaDebito.CardCode); //cfe.DireccionReceptor = cfe.CiuidadReceptor;// +" " + cfe.PaisReceptor; cfe.DireccionReceptor = this.ObtenerCiudad(notaDebito.DocEntry, "INV12"); cfe.NumeroCompraReceptor = this.ObtenerNroPedidoReceptor(notaDebito.DocEntry, TABLA_NOTA_DEBITO); #endregion RECEPTOR #region TOTALES ENCABEZADO cfe.TipoModena = this.ObtenerCodigoISOModena(notaDebito.DocCurrency); ManteUdoTipoCambio manteUdoTipoCambio = new ManteUdoTipoCambio(); string temp = "", confTC = manteUdoTipoCambio.ObtenerConfiguracion(out temp); if (confTC.Equals("N")) { double docRate = this.ObtenerDocRate(); if (cfe.TipoModena == "UYU" || cfe.TipoModena == "UY") { cfe.TipoCambio = 1; } else { if (docRate > 0) { cfe.TipoCambio = 1 / docRate; cfe.TipoCambio = Math.Round(cfe.TipoCambio, 2); } } } else { cfe.TipoCambio = notaDebito.DocRate; } //Si el cliente es extrangero entonces el monto de exportacion y asimilados es la suma de las lineas si importar el codigo de impuesto que tenga //y el monto total a pagar va ser ese mismo monto. En el xslt en ambos casos se asigna el mismo valor if (this.ValidarClienteExtranjero(notaDebito.CardCode)) { cfe.TotalMontoExportacionAsimilados = this.ObtenerTotalesExportacion(notaDebito); } else { cfe.TotalMontoNoGravado = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("1"));// / cfe.TipoCambio; cfe.TotalMontoNoGravadoExtranjero = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("1")); cfe.TotalMontoImpuestoPercibido = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("11"));// / cfe.TipoCambio; cfe.TotalMontoImpuestoPercibidoExtranjero = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("11")); cfe.TotalMontoIVASuspenso = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("12"));// / cfe.TipoCambio; cfe.TotalMontoIVASuspensoExtranjero = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("12")); cfe.TotalMontoNetoIVATasaMinima = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("2"));// / cfe.TipoCambio; cfe.TotalMontoNetoIVATasaMinimaExtranjero = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("2")); cfe.TotalMontoNetoIVATasaBasica = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("3"));// / cfe.TipoCambio; cfe.TotalMontoNetoIVATasaBasicaExtranjero = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("3")); cfe.TotalMontoNetoIVAOtraTasa = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("4"));// / cfe.TipoCambio; cfe.TotalMontoNetoIVAOtraTasaExtranjero = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("4")); cfe.TasaMinimaIVA = this.ObtenerIvaTasaMinima(); cfe.TasaBasicaIVA = this.ObtenerIvaTasaBasica(); cfe.TotalIVAOtraTasa = this.ObtenerTotalesIVAPorTasa(notaDebito.DocEntry.ToString(), "IVAB", "INV1"); } cfe.Lineas = notaDebito.Lines.Count; #endregion TOTALES ENCABEZADO #region ITEMS for (int i = 0; i < notaDebito.Lines.Count; i++) { notaDebito.Lines.SetCurrentLine(i); //Si el Tipo de lista de Materiales de Ventas no lo agrego al XML if (!notaDebito.Lines.TreeType.ToString().Equals("iIngredient")) { //Nueva instancia del objeto item de cfe item = cfe.NuevoItem(); item.NumeroLinea = i + 1; string indFacturacionNumero = "";// notaDebito.Lines.UserFields.Fields.Item("U_IndND").Value + ""; if (indFacturacionNumero.Equals("6")) { item.IndicadorFacturacion = 6; } else if (indFacturacionNumero.Equals("7")) { item.IndicadorFacturacion = 7; } #region FE_EXPORTACION else if (this.ValidarClienteExtranjero(notaDebito.CardCode)) { item.IndicadorFacturacion = 10; } #endregion FE_EXPORTACION else { string resultadoIndicadorFacturacion = this.ObtenerIndicadorFacturacion(notaDebito.Lines.TaxCode.ToString()); if (resultadoIndicadorFacturacion.Equals("")) { item.IndicadorFacturacion = 0; } else { item.IndicadorFacturacion = Convert.ToInt16(resultadoIndicadorFacturacion); } } item.NombreItem = notaDebito.Lines.ItemCode; item.DescripcionItem = notaDebito.Lines.ItemDescription; item.CantidadItem = notaDebito.Lines.Quantity; item.PrecioUnitarioItem = notaDebito.Lines.Price - (notaDebito.Lines.Price * (notaDebito.DiscountPercent / 100)); if (item.PrecioUnitarioItem.ToString().Equals("0")) { item.IndicadorFacturacion = 5; } item.PrecioUnitarioItemPDF = notaDebito.Lines.Price; item.LineNum = notaDebito.Lines.LineNum; item.ArticulosXUnidad = notaDebito.Lines.UnitsOfMeasurment; item.UnidadMedida = this.ObtenerUnidadMedidaItem(notaDebito.Lines.ItemCode, notaDebito.DocEntry + "", notaDebito.Lines.LineNum + "", "INV1"); item.UnidadMedidaPDF = item.UnidadMedida; item.TipoImpuesto = notaDebito.Lines.TaxCode; cfe.AgregarItem(item); } } #endregion ITEMS #region MEDIOS DE PAGO mediosPago = cfe.NuevoMediosPago(); mediosPago.Glosa = this.ObtenerMedioPago(notaDebito.DocEntry.ToString(), TABLA_NOTA_DEBITO); if (formaPago.Equals("Contado")) { cfe.FormaPago = CFE.ESFormaPago.Contado; } else { cfe.FormaPago = CFE.ESFormaPago.Credito; } cfe.AgregarMediosPago(mediosPago); #endregion MEDIOS DE PAGO descuentoGeneral = notaDebito.TotalDiscount; descuentoGeneralExtranjero = notaDebito.TotalDiscountFC; porcentajeDescuento = notaDebito.DiscountPercent; #region IDENTIFICACION DEL COMPROBANTE //Valida que el documento sea de contingencia if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { //Valida que el cliente sea de contado if (this.ValidarClienteContado(notaDebito.CardCode)) { cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDETicketContingencia)); } else { //Valida si es un ciente extranjero if (this.ValidarClienteExtranjero(notaDebito.CardCode)) { cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFacturaExportacionContingencia)); } else { cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFacturaContingencia)); } } }//Si no es contingencia else { //Valida que el cliente sea de contado if (this.ValidarClienteContado(notaDebito.CardCode)) { cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDETicket)); rango = this.ObtenerDatosRangoCFE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDETicket), cfe.CodigoCasaPrincipalEmisor.ToString(), cfe.CajaEmisor) as Rango; } else { //Valida si es un cliente extranjero if (this.ValidarClienteExtranjero(notaDebito.CardCode)) { cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFacturaExportacion)); rango = this.ObtenerDatosRangoCFE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFacturaExportacion), cfe.CodigoCasaPrincipalEmisor.ToString(), cfe.CajaEmisor) as Rango; } else { cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFactura)); rango = this.ObtenerDatosRangoCFE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFactura), cfe.CodigoCasaPrincipalEmisor.ToString(), cfe.CajaEmisor) as Rango; } } } //Estado de contigencia serie y numero se ingresan manualmente if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { SAPbouiCOM.Item txtNumCFE = SAPbouiCOM.Framework.Application.SBO_Application.Forms.ActiveForm.Items.Item("txtNumCFE"); SAPbouiCOM.Item txtSeCFE = SAPbouiCOM.Framework.Application.SBO_Application.Forms.ActiveForm.Items.Item("txtSeCFE"); cfe.SerieComprobante = ((SAPbouiCOM.EditText)txtSeCFE.Specific).Value + ""; cfe.NumeroComprobante = int.Parse(((SAPbouiCOM.EditText)txtNumCFE.Specific).Value + ""); } else { if (rango != null) { cfe.SerieComprobante = rango.Serie; cfe.NumeroComprobante = rango.NumeroActual; } } cfe.FechaComprobante = notaDebito.DocDate.ToString("yyyy-MM-dd"); cfe.FechaVencimiento = notaDebito.DocDueDate.ToString("yyyy-MM-dd"); if (notaDebito.DocType == BoDocumentTypes.dDocument_Items) { cfe.TipoDocumentoSAP = CFE.ESTIpoDocumentoSAP.Articulo; } else if (notaDebito.DocType == BoDocumentTypes.dDocument_Service) { cfe.TipoDocumentoSAP = CFE.ESTIpoDocumentoSAP.Servicio; } //if (notaDebito.DocumentStatus == BoStatus.bost_Close) //{ // cfe.FormaPago = CFE.ESFormaPago.Contado; //} //else //{ // cfe.FormaPago = CFE.ESFormaPago.Credito; //} #endregion IDENTIFICACION DEL COMPROBANTE #region EXPORTACION int modalidad, viaTransporte; bool convertido = int.TryParse(notaDebito.UserFields.Fields.Item("U_ModVenND").Value, out modalidad); if (convertido) { cfe.ModalidadVentaInt = modalidad; } #region FE_EXPORTACION //cfe.ViaTransporteInt = notaDebito.TransportationCode; convertido = false; convertido = int.TryParse(notaDebito.UserFields.Fields.Item(Globales.Constantes.UDFViaTransporteND).Value, out viaTransporte); if (convertido) { cfe.ViaTransporteInt = viaTransporte; } #endregion FE_EXPORTACION cfe.ClausulaVenta = notaDebito.UserFields.Fields.Item("U_ClaVenND").Value; #endregion EXPORTACION #region ADENDA //ManteUdoAdenda manteUdoAdenda = new ManteUdoAdenda(); //Adenda adenda = manteUdoAdenda.ObtenerAdenda(ProcConexion.Comp, Adenda.ESTipoObjetoAsignado.TipoCFE113, notaDebito.DocNum.ToString()); //cfe.TextoLibreAdenda = adenda.CadenaAdenda; cfe.TextoLibreAdenda = adenda;// notaDebito.UserFields.Fields.Item("U_AdendaND").Value; #endregion ADENDA #region DOCUMENTO DE REFERENCIA //cfeReferencia = (CFEInfoReferencia)this.ObtenerDocumentoReferencia(TABLA_DETALLES_NOTA_DEBITO, notaDebito.DocEntry.ToString()); //if (cfeReferencia != null) //{ // cfeReferencia.NumeroLinea = 1; //} //else //{ // cfeReferencia = new CFEInfoReferencia(); // cfeReferencia.IndicadorReferenciaGlobal = CFEInfoReferencia.ESIndicadorReferenciaGlobal.ReferenciaGlobal; // cfeReferencia.NumeroLinea = 1; // cfeReferencia.NumeroComprobanteReferencia = ""; // cfeReferencia.SerieComprobanteReferencia = ""; // if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) // { // cfeReferencia.TipoCFEReferencia = 111; // cfeReferencia.SerieComprobanteReferencia = "A";//Serie del documento de referencia // cfeReferencia.NumeroComprobanteReferencia = "1";//Numero de CFE del documento de referencia // } // if (razonRef.Equals("")) // { // cfeReferencia.RazonReferencia = "Descuento General"; // } // else // { // cfeReferencia.RazonReferencia = razonRef; // } //} cfeReferencia = new CFEInfoReferencia(); cfeReferencia.NumeroLinea = 1; cfeReferencia.SerieComprobanteReferencia = notaDebito.UserFields.Fields.Item("U_SerieRefND").Value; if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { cfeReferencia.TipoCFEReferencia = 111; cfeReferencia.SerieComprobanteReferencia = "A"; //Serie del documento de referencia cfeReferencia.NumeroComprobanteReferencia = "1"; //Numero de CFE del documento de referencia } else { if (cfeReferencia.SerieComprobanteReferencia == "" || cfeReferencia.SerieComprobanteReferencia == "1") { cfeReferencia.IndicadorReferenciaGlobal = CFEInfoReferencia.ESIndicadorReferenciaGlobal.ReferenciaGlobal; cfeReferencia.SerieComprobanteReferencia = ""; cfeReferencia.NumeroComprobanteReferencia = ""; cfeReferencia.RazonReferencia = "Descuento General"; } else { cfeReferencia.TipoCFEReferencia = 111; cfeReferencia.NumeroComprobanteReferencia = notaDebito.UserFields.Fields.Item("U_NumRefND").Value; cfeReferencia.RazonReferencia = razonRef; } } if (cfeReferencia != null) { cfe.AgregarInfoReferencia(cfeReferencia); } #endregion DOCUMENTO DE REFERENCIA #region CAE //Valida que el documento sea de contingencia if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { //Valida que el cliente sea de contado if (this.ValidarClienteContado(notaDebito.CardCode)) { cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.Contingencia)) as CAE; } else { cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.Contingencia)) as CAE; } }//Si no es contingencia else { //Valida que el cliente sea de contado if (this.ValidarClienteContado(notaDebito.CardCode)) { cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDETicket)) as CAE; } else { #region FE_EXPORTACION //cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFactura)) as CAE; if (ValidarClienteExtranjero(notaDebito.CardCode)) { cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFacturaExportacion)) as CAE; } else { cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFactura)) as CAE; } #endregion FE_EXPORTACION } } if (cae.NumeroAutorizacion != null) { cfe.NumeroCAE = long.Parse(cae.NumeroAutorizacion); cfe.NumeroInicialCAE = cae.NumeroDesde; cfe.NumeroFinalCAE = cae.NumeroHasta; cfe.FechaVencimientoCAE = cae.FechaVencimiento; ManteDocumentos manteDocumentos = new ManteDocumentos(); FinCae finCae = manteDocumentos.ObtenerAlertaCAE(); if (finCae.Cantidad > 0 && rango != null) { if ((cae.NumeroHasta - rango.NumeroActual) <= finCae.Cantidad) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox ("!!!Atención!!! Rango utilizado: " + rango.NumeroActual + " de: " + cae.NumeroHasta + ". Solicitar Nuevos CAEs a DGI."); } } DateTime fechaVencimiento = DateTime.Parse(cae.FechaVencimiento); TimeSpan diferenciaDias = DateTime.Now.Subtract(fechaVencimiento); int diasFecha = int.Parse(diferenciaDias.Days.ToString()); if (diasFecha > 0 && finCae.Dias != 0) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox ("!!!Atención!!! El rango se venció, fecha de vencimiento: " + cae.FechaVencimiento); } else { diasFecha = diasFecha * -1; if (diasFecha <= finCae.Dias && finCae.Dias != 0) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox ("!!!Atención!!! El rango se va vencer, fecha de vencimiento: " + cae.FechaVencimiento); } } } else { cfe = null; } #endregion CAE #region Web Service cfe.OrigenFE = notaDebito.UserFields.Fields.Item("U_Origen").Value; #endregion Web Service } catch (Exception ex) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("NotaDebitoB1/Error: " + ex.ToString()); } finally { if (notaDebito != null) { //Libera de memoria el obtejo notaDebito System.Runtime.InteropServices.Marshal.ReleaseComObject(notaDebito); GC.Collect(); } } return cfe; }
//MAIN FUNCTION public void Compute(double[,] array, int counterStart, int kForNodes) { //model.stampAngle = array[i, 0]; //model.stampAngle = Math.Round(model.stampAngle); model.stampAngle = model.startAngle; model.blankRadius = array[counterStart, 0]; model.blankRadius = Math.Round(model.blankRadius, 2); model.friction = array[counterStart, 1]; model.friction = Math.Round(model.friction, 2); model.dieRadius = (Math.Tan(model.stampAngle * Math.PI / 180) * 60) + 10; model.dieRadius = Math.Round(model.dieRadius, 1); //объём усеченного конуса (верхний радиус 10, нижний может меняться) 60 - высота усеченного конуса model.dieVolume = (Math.PI * 60 * (Math.Pow(model.dieRadius, 2) + model.dieRadius * 10 + Math.Pow(10, 2))) / 3; #region необходимо для вычесления облоя //3 - радиус скругления, 90 - градус double filletLength = Math.Tan((180 - (((90 + model.stampAngle) / 2) + 90)) * Math.PI / 180) * 3; double upperRadius = model.dieRadius + filletLength + 10; double angle30X = upperRadius - 5; double lowerVolume = Math.Pow((angle30X - 5), 2) * Math.PI * 1; model.dieVolume += lowerVolume; double shave = Math.Pow(angle30X, 2) * Math.PI * 1; shave -= lowerVolume; model.dieVolume = Math.Round(model.dieVolume, 1); #endregion model.blankUpperRadius = model.blankRadius - (Math.Tan(model.stampAngle * Math.PI / 180) * 2); model.blankPosition = (Math.PI * 2 * (Math.Pow(model.blankRadius, 2) + model.blankRadius * (model.blankUpperRadius) + Math.Pow((model.blankUpperRadius), 2))) / 3; model.blankPosition = Math.Round(model.blankPosition, 2); //объем цилиндра, не считая фаску (как будто её нет,а заготовка имеет форму просто цилиндра) double abstractRadiusVolume = Math.PI * Math.Pow(model.blankRadius, 2) * 2; double blankVolume = model.dieVolume + (abstractRadiusVolume - model.blankPosition); //объём зазора между матрицей и площадкой blankVolume += shave; model.blankHeight = blankVolume / (Math.PI * Math.Pow(model.blankRadius, 2)); model.blankHeight = Math.Round(model.blankHeight, 2); double radiusAfterLowerFillet = angle30X - 5; double radiusHeightInStamp; radiusHeightInStamp = 60 * ((radiusAfterLowerFillet - model.blankRadius) / (radiusAfterLowerFillet - 10)); //необходимо для вычесления объёма от пуансона до конца матрицы model.lowerFilletRadius = radiusAfterLowerFillet; if (model.blankRadius > 10) { model.blankPosition = model.blankHeight - radiusHeightInStamp; model.blankPosition = Math.Round(model.blankPosition, 1); model.blankPosition += 5; } else { double tempHeight = model.blankHeight - 60; model.blankPosition = tempHeight * ((model.dieRadius - 10) / (model.dieRadius - 10)); model.blankPosition = Math.Round(model.blankPosition, 1); //допуск +2мм на всякий пожарный случай model.blankPosition += 2; } model.stampDisplacement = model.blankPosition; //оставляем зазор 1мм model.stampDisplacement -= 1; #region Создание общей папки с название радиуса заготовки genReport.folderName = Convert.ToString(model.blankRadius); if (!Directory.Exists(genReport.folderName)) { Directory.CreateDirectory(genReport.folderName); } #endregion string abaqusOutputFolder = Convert.ToString(model.blankRadius) + "r" + Convert.ToString(model.friction) + "f"; file.outputFolder = Path.Combine(genReport.folderName, abaqusOutputFolder); if (!Directory.Exists(file.outputFolder)) { Directory.CreateDirectory(file.outputFolder); } #region Пути для солида file.caeFolder = Path.Combine(Environment.CurrentDirectory, file.outputFolder, add.jobName + ".cae"); file.caeFolder = file.caeFolder.Replace(@"\", "/"); file.stampFolder = Path.Combine(Environment.CurrentDirectory, file.outputFolder, file.stampName); file.stampFolder = file.stampFolder.Replace(@"\", "/"); file.blankFolder = Path.Combine(Environment.CurrentDirectory, file.outputFolder, file.blankName); file.blankFolder = file.blankFolder.Replace(@"\", "/"); file.platformFolder = Path.Combine(Environment.CurrentDirectory, file.outputFolder, file.platformName); file.platformFolder = file.platformFolder.Replace(@"\", "/"); #endregion var solid = new CAD(); solid.UseSolid(file, model); rout.pathIn = "abaqusMacros.py"; rout.workingDirectory = file.outputFolder; rout.pathOut = rout.workingDirectory + @"\abaqusMacros.py"; var change = new Change(); change.Output(rout, model, material, add, file); var abaqus = new CAE(); abaqus.runAbaqus(rout, cmd); var processData = new ProcessData(rout, cmd); processData.Processing(model, file, filesForVolume, genReport); finalReport.AddData(model); genReport.AddFrictionToChart(model); genReport.AddRadiusToChart(model); #region проверка симплекса string fileName = "SimplexNodes"; var str = new StringBuilder(); str.Append(kForNodes); str.Append(";"); str.Append(model.blankRadius); str.Append(";"); str.Append(model.friction); str.Append(";"); str.Append(model.pctOfDieFilling); str.Append(";"); str.Append((model.reactionForceToBlank * Math.Pow(10, -6))); str.Append(";"); str.Append(Environment.NewLine); var fileCreate = new FileCreation(); fileCreate.CreateFile("", fileName, ".csv", str.ToString()); #endregion }