private void BtnFacturar_Click(object sender, EventArgs e) { try { string msg = this.ValidarReserva(); if (msg != "") { SISTEMA.MENSAJES.FrmAviso FrmAvi = new LFVBNewTPV.SISTEMA.MENSAJES.FrmAviso(msg); } else { //Guardamos los datos sensibles if (this.CmbCodEsre.SelectedValue != null && this.CmbCodEsre.SelectedValue.ToString() != this.reserva.datos["COD_ESRE"].ToString()) { this.reserva.datos["COD_ESRE"] = this.CmbCodEsre.SelectedValue.ToString(); this.reserva.datos["FECHA_ESRE"] = DateTime.Now; } else if (this.CmbCodEsre.SelectedValue == null) { this.reserva.datos["COD_ESRE"] = "GRB"; this.reserva.datos["FECHA_ESRE"] = DateTime.Now; } bool ExistenExistencias = true; Productos lstp = Productos.ObtenInstancia(); foreach (DataRow d in this.reserva.lineas.Rows) { Int64 idprod; Int64.TryParse(d["ID_ELEM_PROD"].ToString(), out idprod); if (idprod > 0) { Producto p = lstp.Buscar(idprod); if (p != null) { double existencias = p.ObtenStock(); double pedidas = 0; Double.TryParse(d["CANTIDAD_PROD"].ToString(), out pedidas); if (pedidas > existencias) { ExistenExistencias = false; } } } } if (ExistenExistencias) { //Puedo facturar TPV.FrmAuxiliares.FrmTipoDocumento FrmTipo = new TPV.FrmAuxiliares.FrmTipoDocumento(); FrmTipo.ShowDialog(); if (FrmTipo.TipoSel.Trim() != "") { Documentos auxdocs = Documentos.ObtenInstancia(); Documento nuevo = auxdocs.Nuevo(); //Relleno los datos del nuevo documento nuevo.datos["ID_ELEM_PERS"] = this.reserva.datos["ID_ELEM_PERS"]; foreach (DataRow d in this.reserva.lineas.Rows) { DataRow l = nuevo.lineas.NewRow(); l["ID_ELEM_PROD"] = d["ID_ELEM_PROD"]; l["CANTIDAD_LIDO"] = d["CANTIDAD_PROD"]; l["TEXTO_LIDO"] = d["DESCRIPCION_PROD"]; l["PVB_LIDO"] = d["PVB_LIRE"]; l["PORC_IVA_LIDO"] = d["PORC_IVA_LIRE"]; l["PVP_LIDO"] = d["PVP_LIRE"]; double cant = 0; double pvp = 0; double.TryParse(l["CANTIDAD_LIDO"].ToString(), out cant); double.TryParse(l["PVP_LIDO"].ToString(), out pvp); l["TOTAL_LIDO"] = cant * pvp; nuevo.lineas.Rows.Add(l); } DataRow ln = nuevo.lineas.NewRow(); ln["ID_ELEM_PROD"] = DBNull.Value; ln["CANTIDAD_LIDO"] = 0; ln["TEXTO_LIDO"] = "Reserva nº " + this.reserva.datos["ID_ELEM"].ToString(); ln["PVB_LIDO"] = 0; ln["PORC_IVA_LIDO"] = 0; ln["PVP_LIDO"] = 0; ln["TOTAL_LIDO"] = 0; nuevo.lineas.Rows.Add(ln); TPV.FrmDocumento FrmDocu = new TPV.FrmDocumento(nuevo, FrmTipo.TipoSel.Trim()); FrmDocu.reserva = this.reserva; FrmDocu.ShowDialog(); this.reserva = this.reserva.parent.Buscar(Convert.ToInt64(this.reserva.datos["ID_ELEM"].ToString())); } } else { //No puedo facturar al faltar algun producto this.CmbCodEsre.SelectedValue = "PST"; SISTEMA.MENSAJES.FrmAviso FrmAvi = new LFVBNewTPV.SISTEMA.MENSAJES.FrmAviso("Existen productos sin stock suficiente para ser servidos"); } } } catch (Exception err) { if (global::LFVBNewTPV.Properties.Settings.Default.MODO_DEBUG) { SISTEMA.MENSAJES.FrmError FrmErr = new LFVBNewTPV.SISTEMA.MENSAJES.FrmError(err); } else { SISTEMA.MENSAJES.FrmAviso FrmAvi = new LFVBNewTPV.SISTEMA.MENSAJES.FrmAviso(err.Message); } } }