private string Grabar(string strDatosCabecera, string strDatosPosiciones) { string sResul = ""; bool bErrorControlado = false; #region abrir conexión y transacción try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccion(oConn); } catch (Exception ex) { if (oConn.State == ConnectionState.Open) { Conexion.Cerrar(oConn); } sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex); return(sResul); } #endregion try { #region Datos Cabecera string[] aDatosCabecera = Regex.Split(strDatosCabecera, "##"); ///aDatosCabecera[0] = ID Plantilla ///aDatosCabecera[1] = ID Cliente Respon.Pago ///aDatosCabecera[2] = ID Cliente Destinatario Fra ///aDatosCabecera[3] = Referencia del cliente ///aDatosCabecera[4] = Condición de pago ///aDatosCabecera[5] = Vía de pago ///aDatosCabecera[6] = Moneda ///aDatosCabecera[7] = Fecha prevista de emisión de fra ///aDatosCabecera[8] = // Observaciones Pool ///aDatosCabecera[9] = Clave de agrupación ///aDatosCabecera[10] = Denominación de la plantilla ///aDatosCabecera[11] = Comentarios ///aDatosCabecera[12] = Estado ///aDatosCabecera[13] = Responsable Comercial ///aDatosCabecera[14] = ID proyectosubnodo ///aDatosCabecera[15] = ID Organización de ventas ///aDatosCabecera[16] = Descuento % ///aDatosCabecera[17] = Descuento importe ///aDatosCabecera[18] = Fecha diferida ///aDatosCabecera[19] = ID Cliente Socilitante ///aDatosCabecera[20] = sIDDocuAux ///aDatosCabecera[21] = chkIVA int nIdPlantilla = int.Parse(aDatosCabecera[0]); int? iIdCliSolicitante = (aDatosCabecera[19] == "") ? null : (int?)int.Parse(aDatosCabecera[19]); int? iIdCliResPago = (aDatosCabecera[1] == "") ? null : (int?)int.Parse(aDatosCabecera[1]); int? iIdCliDesFra = (aDatosCabecera[2] == "") ? null : (int?)int.Parse(aDatosCabecera[2]); string sRefCli = Utilidades.unescape(aDatosCabecera[3]); string sCondPago = aDatosCabecera[4]; string sViaPago = aDatosCabecera[5]; string sMoneda = aDatosCabecera[6]; DateTime?dFechaPrevEmFra = (aDatosCabecera[7] == "") ? null : (DateTime?)DateTime.Parse(aDatosCabecera[7]); string sObservPool = Utilidades.unescape(aDatosCabecera[8]); int? iIDAgrupacion = (aDatosCabecera[9] == "") ? null : (int?)int.Parse(aDatosCabecera[9]); string sDenominacion = Utilidades.unescape(aDatosCabecera[10]); string sComentarios = Utilidades.unescape(aDatosCabecera[11]); string sEstado = aDatosCabecera[12]; //int iIdRespComercial = int.Parse(aDatosCabecera[13]); int? nPSN = (aDatosCabecera[14] == "") ? null : (int?)int.Parse(aDatosCabecera[14]); string sOVSAP = aDatosCabecera[15]; float nDtoPorc = (aDatosCabecera[16] == "") ? 0 : float.Parse(aDatosCabecera[16]); decimal nDtoImporte = (aDatosCabecera[17] == "") ? 0 : decimal.Parse(aDatosCabecera[17]); string sObservPlantilla = Utilidades.unescape(aDatosCabecera[18]); bool bIVAIncluido = (aDatosCabecera[21] == "1") ? true : false; string sTextoCabecera = Utilidades.unescape(aDatosCabecera[22]); if (nIdPlantilla == 0) { nIdPlantilla = PLANTILLAORDENFAC.Insert(tr, sDenominacion, sEstado, (int)Session["UsuarioActual"], nPSN, iIdCliSolicitante, iIdCliResPago, iIdCliDesFra, sCondPago, sViaPago, sRefCli, dFechaPrevEmFra, sMoneda, iIDAgrupacion, sObservPool, sComentarios, sOVSAP, nDtoPorc, nDtoImporte, bIVAIncluido, sObservPlantilla, aDatosCabecera[20], sTextoCabecera); } else //update { if (sEstado == "T") { ///Estas tres comprobaciones no se pueden realizar bajo la transacción ///existente porque acceden a SAP y no podemos realizar transacciones distribuidas. if (iIdCliSolicitante != null && CLIENTE.EstaBloqueadoSAP(null, (int)iIdCliSolicitante)) { bErrorControlado = true; throw (new Exception("El cliente solicitante está bloqueado en SAP.")); } if (iIdCliResPago != null && CLIENTE.EstaBloqueadoSAP(null, (int)iIdCliResPago)) { bErrorControlado = true; throw (new Exception("El cliente responsable de pago está bloqueado en SAP.")); } if (iIdCliDesFra != null && CLIENTE.EstaBloqueadoSAP(null, (int)iIdCliDesFra)) { bErrorControlado = true; throw (new Exception("El cliente destinatario de factura está bloqueado en SAP.")); } } PLANTILLAORDENFAC.Update(tr, nIdPlantilla, sDenominacion, sEstado, //(int)Session["UsuarioActual"], nPSN, iIdCliSolicitante, iIdCliResPago, iIdCliDesFra, sCondPago, sViaPago, sRefCli, dFechaPrevEmFra, sMoneda, iIDAgrupacion, sObservPool, sComentarios, sOVSAP, nDtoPorc, nDtoImporte, bIVAIncluido, sObservPlantilla, sTextoCabecera); } #endregion #region Datos Posiciones string[] aPosiciones = Regex.Split(strDatosPosiciones, "///"); foreach (string oPosicion in aPosiciones) { if (oPosicion == "") { continue; } string[] aDatosPosicion = Regex.Split(oPosicion, "##"); ///aDatosPosicion[0] = opción BD ///aDatosPosicion[1] = ID Posición de la plantilla ///aDatosPosicion[2] = Concepto de la posición ///aDatosPosicion[3] = Descripción de la posición ///aDatosPosicion[4] = Unidades ///aDatosPosicion[5] = Precio ///aDatosPosicion[6] = Descuento % ///aDatosPosicion[7] = Descuento importe switch (aDatosPosicion[0]) { case "I": int nIDPosicion = PLANTILLAPOSICIONFAC.Insert(tr, nIdPlantilla, Utilidades.unescape(aDatosPosicion[2]), Utilidades.unescape(aDatosPosicion[3]), float.Parse(aDatosPosicion[4]), decimal.Parse(aDatosPosicion[5]), (aDatosPosicion[6] == "") ? 0 : float.Parse(aDatosPosicion[6]), (aDatosPosicion[7] == "") ? 0 : decimal.Parse(aDatosPosicion[7]) ); break; case "U": PLANTILLAPOSICIONFAC.Update(tr, nIdPlantilla, int.Parse(aDatosPosicion[1]), Utilidades.unescape(aDatosPosicion[2]), Utilidades.unescape(aDatosPosicion[3]), float.Parse(aDatosPosicion[4]), decimal.Parse(aDatosPosicion[5]), (aDatosPosicion[6] == "") ? 0 : float.Parse(aDatosPosicion[6]), (aDatosPosicion[7] == "") ? 0 : decimal.Parse(aDatosPosicion[7]) ); break; case "D": PLANTILLAPOSICIONFAC.Delete(tr, nIdPlantilla, int.Parse(aDatosPosicion[1]) ); break; } } #endregion Conexion.CommitTransaccion(tr); sResul = "OK@#@" + nIdPlantilla.ToString("#,###"); } catch (Exception ex) { Conexion.CerrarTransaccion(tr); if (!bErrorControlado) { sResul = "Error@#@" + Errores.mostrarError("Error al grabar los datos de la orden", ex); } else { sResul = "Error@#@Operación rechazada.\n\n" + ex.Message; } } finally { Conexion.Cerrar(oConn); } return(sResul); }
private string getPosiciones(string st629_idplantillaof, string sModoAcceso) { StringBuilder sb = new StringBuilder(); string sClase = ""; try { if (sModoAcceso == "W") { sClase = "MANO"; } sb.Append("<table id='tblPosiciones' class='" + sClase + "' style='width: 880px;' cellpadding='2'>"); sb.Append(" <colgroup>"); sb.Append(" <col style='width:15px;' />"); sb.Append(" <col style='width:20px;' />"); sb.Append(" <col style='width:425px;' />"); sb.Append(" <col style='width:70px;' />"); sb.Append(" <col style='width:70px;' />"); sb.Append(" <col style='width:70px;' />"); sb.Append(" <col style='width:70px;' />"); sb.Append(" <col style='width:100px;' />"); sb.Append(" </colgroup>"); sb.Append("<tbody>"); SqlDataReader dr = PLANTILLAPOSICIONFAC.CatalogoByPlantilla(null, int.Parse(st629_idplantillaof)); string strDatos = "";//, sToolTip = ""; while (dr.Read()) { sb.Append("<tr id='" + dr["t630_posicion"].ToString() + "' "); sb.Append("bd='' "); //sb.Append("estado='" + dr["t611_estado"].ToString() + "' "); sb.Append("onclick='mm(event)' "); sb.Append("style='height:38px; vertical-align:top'>"); sb.Append("<td><img src='../../../../images/imgFN.gif'></td>"); //sToolTip = " title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../../images/info.gif' style='vertical-align:middle' /> Información] body=["; //sToolTip += "<label style='width:150px;'> </label><br>"; //sToolTip += "<label style='width:100px;'><b><u>Posición:</u></b></label><br>"; //sToolTip += "<label style='width:100px;'>Estado:</label>" + dr["estado"].ToString() + "<br>"; //sToolTip += "<label style='width:100px;'>Nº SUPER:</label>" + dr["t611_posicion"].ToString() + "<br>"; //if (dr["t611_estado"].ToString() != "D") //{ // sToolTip += "<label style='width:100px;'>Nº pedido de venta:</label>" + dr["t611_posicion_pedsap"].ToString() + "<br>"; // sToolTip += "<label style='width:100px;'>Nº factura:</label>" + dr["t611_posicion_facsap"].ToString() + "<br><br>"; // sToolTip += "<label style='width:100px;'><b><u>Factura:</u></b></label><br>"; // sToolTip += "<label style='width:100px;'>Serie:</label>" + dr["t611_seriefactura"].ToString() + "<br>"; // sToolTip += "<label style='width:100px;'>Número:</label>" + dr["t611_numfactura"].ToString() + "<br><br>"; // sToolTip += "<label style='width:100px;'><b><u>Cronología:</u></b></label><br>"; // strDatos = dr["t611_fprocesada"].ToString(); // if (strDatos != "") // strDatos = strDatos.Substring(0, strDatos.Length - 3); // sToolTip += "<label style='width:100px;'>Procesada</label>" + strDatos + "<br>"; // strDatos = dr["t611_ffacturada"].ToString(); // if (strDatos != "") // strDatos = strDatos.Substring(0, strDatos.Length - 3); // sToolTip += "<label style='width:100px;'>Facturada</label>" + strDatos + "<br>"; // strDatos = dr["t611_fcontabilizada"].ToString(); // if (strDatos != "") // strDatos = strDatos.Substring(0, strDatos.Length - 3); // sToolTip += "<label style='width:100px;'>Contabilizada</label>" + strDatos + "<br>"; // strDatos = dr["t611_fanulada"].ToString(); // if (strDatos != "") // strDatos = strDatos.Substring(0, strDatos.Length - 3); // sToolTip += "<label style='width:100px;'>Anulada</label>" + strDatos; //} //sToolTip += "] hideselects=[off]\""; sb.Append("<td></td>"); sb.Append("<td>"); //sb.Append("<input type='text' class='txtM' style='width:420px;' value=\"" + dr["t611_denominacion"].ToString() + "\" maxlength='40' onkeyup='aG(1);fm(this);' />"); sb.Append("<textarea class='txtMultiM' style='width:420px;' rows='2' onkeyup='aG(1);fm(event);'>" + dr["t630_descripcion"].ToString() + "</textarea>"); sb.Append("</td>"); sb.Append("<td><input type='text' class='txtNumM' style='width:60px;' value=\"" + float.Parse(dr["t630_unidades"].ToString()).ToString("N") + "\" onfocus='fn(this);' onkeyup='aG(1);fm(event);sip(this);' /></td>"); sb.Append("<td><input type='text' class='txtNumM' style='width:60px;' value=\"" + decimal.Parse(dr["t630_preciounitario"].ToString()).ToString("N") + "\" onfocus='fn(this);' onkeyup='aG(1);fm(event);sip(this);' /></td>"); strDatos = ""; if ((float)dr["t630_dto_porcen"] > 0) { strDatos = float.Parse(dr["t630_dto_porcen"].ToString()).ToString("N"); } sb.Append("<td><input type='text' class='txtNumM' style='width:60px;' value=\"" + strDatos + "\" onfocus='fn(this);' onkeyup='delDtoImporte(this);fm(event);sip(this);' /></td>"); strDatos = ""; if ((decimal)dr["t630_dto_importe"] > 0) { strDatos = decimal.Parse(dr["t630_dto_importe"].ToString()).ToString("N"); } sb.Append("<td><input type='text' class='txtNumM' style='width:60px;' value=\"" + strDatos + "\" onfocus='fn(this);' onkeyup='delDtoPorcentaje(this);fm(event);sip(this);' /></td>"); sb.Append("<td><input type='text' class='txtNumM' style='width:90px;' value=\"" + decimal.Parse(dr["importe"].ToString()).ToString("N") + "\" onfocus='this.selected=false;' readonly /></td>"); sb.Append("</tr>"); } dr.Close(); dr.Dispose(); sb.Append("</tbody>"); sb.Append("</table>"); return(sb.ToString()); } catch (Exception ex) { return("Error@#@" + Errores.mostrarError("Error al obtener las posiciones de una plantilla.", ex)); } }
private string Previsualizar(int t629_idplantillaof) { StringBuilder sb = new StringBuilder(); try { decimal dSubtotal = 0; decimal dTotal = 0; string sMoneda = "", sFechaFactura = ""; // Leer Orden SqlDataReader dr = PLANTILLAORDENFAC.Previsualizar(t629_idplantillaof); if (dr.Read()) { // Completar datos cabecera sMoneda = dr["t629_moneda"].ToString(); sb.Append("<table id='tblCatalogo' align='center' style='width:920px;'>"); sb.Append("<tr>"); sb.Append("<td>"); sb.Append("<table id='tblCabecera' align='left' style='width:900px;'>"); sb.Append("<colgroup>"); sb.Append(" <col style='width:500px;' />"); sb.Append(" <col style='width:400px;' />"); sb.Append("</colgroup>"); sb.Append("<tr><td style='vertical-align:middle; padding-left:3px;'><label class='negri W70'>Su pedido: </label>" + HttpUtility.HtmlEncode(dr["t629_refcliente"].ToString()) + "</td>"); sb.Append("<td style='text-align:right;'>"); sb.Append("<table border='0' width='100%' cellspacing='0' cellpadding='0'>"); sb.Append("<tr>"); sb.Append("<td width='6' height='6' background='../../../../Images/Tabla/7.gif'></td>"); sb.Append("<td height='6' background='../../../../Images/Tabla/8.gif'></td>"); sb.Append("<td width='6' height='6' background='../../../../Images/Tabla/9.gif'></td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td width='6' background='../../../../Images/Tabla/4.gif'> </td>"); sb.Append("<td background='../../../../Images/Tabla/5.gif' style='padding:5px'>"); sb.Append("<!-- Inicio del contenido propio de la página -->"); sb.Append("<center>"); sb.Append("<table style='width:99%;text-align:left' cellpadding='2'>"); sb.Append("<tr><td><nobr class='NBR W360' onmouseover='TTip(event)'>" + dr["t302_denominacion_destfact"].ToString() + "</nobr></td></tr>"); sb.Append("<tr><td>" + dr["Direccion"].ToString() + "</td></tr>"); sb.Append("<tr><td>" + dr["CodPostal"].ToString() + " " + dr["Poblacion"].ToString() + "</td></tr>"); if (dr["t629_comentario"].ToString() != "") { sb.Append("<tr><td>A la AA: " + dr["t629_comentario"].ToString() + "</td></tr>"); } else { sb.Append("<tr><td> </td></tr>"); } sb.Append("</table>"); sb.Append("</center>"); sb.Append("<!-- Fin del contenido propio de la página -->"); sb.Append("</td>"); sb.Append("<td width='6' background='../../../../Images/Tabla/6.gif'> </td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td width='6' height='6' background='../../../../Images/Tabla/1.gif'></td>"); sb.Append("<td height='6' background='../../../../Images/Tabla/2.gif'></td>"); sb.Append("<td width='6' height='6' background='../../../../Images/Tabla/3.gif'></td>"); sb.Append("</tr>"); sb.Append("</table>"); sb.Append("</td>"); sb.Append("</tr>"); if (dr["t629_fprevemifact"] != DBNull.Value) { DateTime dtFecha = DateTime.Parse(dr["t629_fprevemifact"].ToString()); string mes = dtFecha.Month.ToString(); string dia = dtFecha.Day.ToString(); if (dia.Length == 1) { dia = "0" + dia; } if (mes.Length == 1) { mes = "0" + mes; } sFechaFactura = dia + "." + mes + "." + dtFecha.Year.ToString(); } sb.Append("<tr><td colspan='2'><br>"); sb.Append(" <table cellpadding='5px' width='100%' align='center'>"); sb.Append(" <tr>"); sb.Append(" <td width='15%' class='bordeltb' style='vertical-align:top;'><label class='negri'>N.I.F. cliente</label></br>" + dr["NifDestFra"].ToString() + "</td>"); sb.Append(" <td width='15%' class='bordeltb' style='vertical-align:top;'><label class='negri'>Fecha factura</label></br>" + sFechaFactura + "</td>"); sb.Append(" <td width='15%' class='bordeltb' style='vertical-align:top;'><label class='negri'>Código cliente</label></br>" + dr["t302_codigoexterno"].ToString() + "</td>"); sb.Append(" <td width='55%' class='bordes' style='vertical-align:top;'><label class='negri'>Forma de pago</label></br>" + dr["denominacion_condicionpago"].ToString() + "</td>"); sb.Append(" </tr>"); sb.Append(" </table>"); sb.Append(" </td>"); sb.Append("</tr>"); sb.Append("</table>"); sb.Append(" </td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td><br>"); sb.Append("<table class='texto' style='width:900px;' cellpadding='5px'>"); sb.Append("<colgroup>"); sb.Append(" <col style='width:570px;' />"); sb.Append(" <col style='width:70px;' />"); sb.Append(" <col style='width:130px;' />"); sb.Append(" <col style='width:130px;' />"); sb.Append("</colgroup>"); sb.Append("<tr>"); sb.Append("<td class='bordeltb2' style='padding-left:3px;'><label class='negri'>Concepto</label></td>"); sb.Append("<td class='bordeltb2' align='right'><label class='negri'>Cantidad</label></td>"); sb.Append("<td class='bordeltb2' align='right'><label class='negri'>Precio</label></td>"); sb.Append("<td class='bordes2' align='right' style='padding-right:28px;'><label class='negri'>Importe</label></br></td>"); sb.Append("</tr>"); sb.Append("</table>"); float ft629_dto_porcen = float.Parse(dr["t629_dto_porcen"].ToString()); decimal dt629_dto_importe = decimal.Parse(dr["t629_dto_importe"].ToString()); decimal dImporte = 0; string strTexto = ""; string sIdProyecto = int.Parse(dr["t301_idproyecto"].ToString()).ToString("###,###"); string sTextoCabecera = dr["t629_textocabecera"].ToString(); sTextoCabecera = sTextoCabecera.Replace(((char)13).ToString() + ((char)10).ToString(), "<br>").Replace((char)34, (char)39); sb.Append("<div id='divCatalogo' style='overflow: auto; overflow-x: hidden; width: 917px; height: 350px;'>"); sb.Append("<table style='width:900px;' cellpadding='5px'>"); sb.Append("<colgroup>"); sb.Append(" <col style='width:570px;' />"); sb.Append(" <col style='width:70px;' />"); sb.Append(" <col style='width:130px;' />"); sb.Append(" <col style='width:130px;' />"); sb.Append("</colgroup>"); sb.Append("<tr><td style='padding-left:3px;border-left: #5894ae 1px solid;border-right: #5894ae 1px solid;'>Nuestra referencia: " + sIdProyecto + "</td><td style='text-align:right;vertical-align: bottom;border-right: #5894ae 1px solid;'></td><td style='text-align:right;vertical-align: bottom;border-right: #5894ae 1px solid;'></td><td style='text-align:right;vertical-align:bottom;padding-right:28px;border-right: #5894ae 1px solid;'></td></tr>"); if (sTextoCabecera != "") { sb.Append("<tr style='word-wrap: break-word;'><td style='padding-left:3px;border-left: #5894ae 1px solid;border-right: #5894ae 1px solid;'>" + sTextoCabecera + "</td><td style='text-align:right;vertical-align: bottom;border-right: #5894ae 1px solid;'></td><td style='border-right: #5894ae 1px solid;'></td><td style='border-right: #5894ae 1px solid;text-align:right;vertical-align:bottom;padding-right:28px;'></td></tr>"); } // Completar datos de detalle dr = PLANTILLAPOSICIONFAC.CatalogoByPlantilla(null, t629_idplantillaof); int i = 0; while (dr.Read()) { sb.Append("<tr>"); strTexto = (string)dr["t630_descripcion"]; // SUSTITUIMOS RETORNO DE CARRO Y COMILLA DOBLE X COMILLA SIMPLE strTexto = strTexto.Replace(((char)13).ToString() + ((char)10).ToString(), "<br>").Replace((char)34, (char)39); //strTexto = strTexto.Replace(((char)10).ToString(), "<br>").Replace((char)34, (char)39); sb.Append("<td style='padding-left:3px;border-left: #5894ae 1px solid;border-right: #5894ae 1px solid;'>" + strTexto + "</td>"); sb.Append("<td style='text-align:right;vertical-align:bottom;border-right: #5894ae 1px solid;'>" + float.Parse(dr["t630_unidades"].ToString()).ToString("N") + "</td>"); sb.Append("<td style='text-align:right;vertical-align:bottom;border-right: #5894ae 1px solid;"); if (decimal.Parse(dr["t630_preciounitario"].ToString()) < 0) { sb.Append(" color:red;"); } sb.Append("'>" + decimal.Parse(dr["t630_preciounitario"].ToString()).ToString("N")); sb.Append("</td>"); sb.Append("<td style='text-align:right;vertical-align:bottom;padding-right:28px;border-right: #5894ae 1px solid;'"); if (decimal.Parse(dr["importe_sin_dto"].ToString()) < 0) { sb.Append(" color:red;"); } sb.Append("'>" + decimal.Parse(dr["importe_sin_dto"].ToString()).ToString("N")); sb.Append("</td>"); sb.Append("</tr>"); dSubtotal += decimal.Parse(dr["importe_sin_dto"].ToString()); dImporte = 0; if ((float)dr["t630_dto_porcen"] > 0) { sb.Append("<tr style='height:26px'>"); sb.Append("<td style='text-align:right; vertical-align:top; border-left: #5894ae 1px solid;border-right: #5894ae 1px solid;'><span style='position:relative;top:-10px'>Descuento (" + float.Parse(dr["t630_dto_porcen"].ToString()).ToString("N") + " %)</span>"); sb.Append("</td>"); sb.Append("<td style='border-right: #5894ae 1px solid;'>"); sb.Append("</td>"); sb.Append("<td style='vertical-align:top; text-align:right; border-right: #5894ae 1px solid;"); if (decimal.Parse(dr["importe_porcen"].ToString()) < 0) { sb.Append(" color:red;"); } sb.Append("'><span style='position:relative;top:-10px'>" + decimal.Parse(dr["importe_porcen"].ToString()).ToString("N")); sb.Append("</span></td>"); dImporte = decimal.Parse(dr["importe_porcen"].ToString()) * (-1); sb.Append("<td style='vertical-align:top; text-align:right; padding-right:28px;border-right: #5894ae 1px solid;"); if (dImporte < 0) { sb.Append(" color:red;"); } sb.Append("'><span style='position:relative;top:-10px'>" + dImporte.ToString("N")); sb.Append("</span></td>"); sb.Append("</tr>"); } if ((decimal)dr["t630_dto_importe"] > 0) { sb.Append("<tr style='height:25px'>"); sb.Append("<td style='vertical-align:top; text-align:right; border-left: #5894ae 1px solid;border-right: #5894ae 1px solid;'><span style='position:relative;top:-10px'>Descuento"); sb.Append("</span></td>"); sb.Append("<td style='vertical-align:top; border-right: #5894ae 1px solid;'>"); sb.Append("</td>"); sb.Append("<td style='vertical-align:top; text-align:right; border-right: #5894ae 1px solid;"); if (decimal.Parse(dr["t630_dto_importe"].ToString()) < 0) { sb.Append(" color:red"); } sb.Append("'><span style='position:relative;top:-10px'>" + decimal.Parse(dr["t630_dto_importe"].ToString()).ToString("N")); sb.Append("</span></td>"); dImporte = decimal.Parse(dr["t630_dto_importe"].ToString()) * (-1); sb.Append("<td style='vertical-align:top; text-align:right; padding-right:28px;border-right: #5894ae 1px solid;"); if (dImporte < 0) { sb.Append(" color:red;"); } sb.Append("'><span style='position:relative;top:-10px'>" + dImporte.ToString("N")); sb.Append("</span></td>"); sb.Append("</tr>"); i++; } dSubtotal += dImporte; } while (i < 16) { sb.Append("<tr><td style='border-left: #5894ae 1px solid;border-right: #5894ae 1px solid;'> </td><td style='border-right: #5894ae 1px solid;'></td><td style='border-right: #5894ae 1px solid;'></td><td style='border-right: #5894ae 1px solid;'></td></tr>"); i++; } sb.Append("</table>"); sb.Append("</DIV>"); dTotal = dSubtotal; sb.Append("<table style='width:900px;' cellpadding='0px'>"); sb.Append("<colgroup>"); sb.Append(" <col style='width:570px;' />"); sb.Append(" <col style='width:70px;' />"); sb.Append(" <col style='width:130px;' />"); sb.Append(" <col style='width:130px;' />"); sb.Append("</colgroup>"); // Cerrar cuerpo sb.Append("<tr>"); sb.Append("<td style='padding-left:3px;' class='bordet'>"); sb.Append("</td>"); sb.Append("<td style='text-align:right;' class='bordet'>"); sb.Append("</td>"); sb.Append("<td style='text-align:right;' class='bordet'>"); sb.Append("</td>"); sb.Append("<td style='text-align:right;' class='bordet'>"); sb.Append("</td>"); sb.Append("</tr>"); // Subtotal sb.Append("<tr>"); sb.Append("<td style='padding-left:3px;padding-top:5px;' >"); sb.Append("</td>"); sb.Append("<td style='text-align:right;padding-top:5px;'>"); sb.Append("</td>"); sb.Append("<td style='text-align:right;padding-top:5px;' class='bordelr' ><label class='negri'>Subtotal</label>"); sb.Append("</td>"); sb.Append("<td style='text-align:right;padding-right:28px;padding-top:5px;' class='bordelr'"); if (dSubtotal < 0) { sb.Append("color:red"); } sb.Append("'>" + dSubtotal.ToString("N")); sb.Append("</td>"); sb.Append("</tr>"); // Descuento en porcentaje if (ft629_dto_porcen > 0) { sb.Append("<tr>"); sb.Append("<td style='padding-left:3px;padding-top:5px;'>"); sb.Append("</td>"); sb.Append("<td style='text-align:right;padding-top:5px;'>"); sb.Append("</td>"); sb.Append("<td style='text-align:right;padding-top:5px;' class='bordelr' ><label class='negri'>Descuento (" + ft629_dto_porcen.ToString("N") + " %)</label>"); sb.Append("</td>"); decimal dDto = (dSubtotal * decimal.Parse(ft629_dto_porcen.ToString()) / 100) * -1; sb.Append("<td class='bordelr' style='text-align:right;padding-right:28px;padding-top:5px;"); if (dDto < 0) { sb.Append("color:red"); } sb.Append("'>" + dDto.ToString("N")); sb.Append("</td>"); sb.Append("</tr>"); dTotal = dTotal + dDto; } // Descuento en importe if (dt629_dto_importe > 0) { sb.Append("<tr>"); sb.Append("<td style='padding-left:3px;padding-top:5px;'>"); sb.Append("</td>"); sb.Append("<td style='text-align:right;padding-top:5px;'>"); sb.Append("</td>"); sb.Append("<td style='text-align:right;padding-top:5px;' class='bordelr' ><label class='negri'>Descuento</label>"); sb.Append("</td>"); decimal dDto = (dt629_dto_importe * -1); sb.Append("<td class='bordelr' style='text-align:right;padding-right:28px;padding-top:5px;"); if (dDto < 0) { sb.Append("color:red"); } sb.Append("'>" + dDto.ToString("N")); sb.Append("</td>"); sb.Append("</tr>"); dTotal = dTotal + dDto; } // Total sb.Append("<tr>"); sb.Append("<td style='padding-left:3px;padding-top:5px;padding-bottom:5px;'>"); sb.Append("</td>"); sb.Append("<td style='text-align:right;padding-top:5px;padding-bottom:5px;'>"); sb.Append("</td>"); sb.Append("<td style='text-align:right;padding-top:5px;padding-bottom:5px;' class='bordelrb'><label class='negri'>Total</label>"); sb.Append("</td>"); sb.Append("<td class='bordelrb' style='text-align:right;padding-right:5px;padding-top:5px;padding-bottom:5px;'><label "); if (dTotal < 0) { sb.Append(" style='color:red'"); } sb.Append(">" + dTotal.ToString("N") + "</label> " + sMoneda); sb.Append("</td>"); sb.Append("</tr>"); sb.Append(" </td>"); sb.Append("</tr>"); sb.Append("</table>"); } else { sErrores = "No se han obtenido los datos de la plantilla de orden de facturación nº: " + t629_idplantillaof.ToString("#,###") + "."; return("Error@#@" + sErrores); } dr.Close(); dr.Dispose(); return("OK@#@" + sb.ToString()); } catch (Exception ex) { return("Error@#@" + Errores.mostrarError("Error al obtener las posiciones de una plantilla de orden de facturación.", ex)); } }