public void salidaAlmacen(double totalExistencia, List <Presentacion> presentaciones, Int32 lIdDocumento, Salida_almacen salida, string codigoAlmacen) { bool success = true; if (totalExistencia >= Convert.ToDouble(txtCantidad.Text)) { int cont = 0; double resultado = 0; double cantidadSalidaContpaq = 0; foreach (var pExistente in presentaciones) { cont++; if (cont == 1) { resultado = Double.Parse(Convert.ToString(pExistente.existencia)) - Double.Parse(txtCantidad.Text); } else { resultado = Double.Parse(Convert.ToString(pExistente.existencia)) - resultado; } if (resultado < 0) { if (pExistente.existencia > 0) { success = movimientoAlmacen(pExistente, lIdDocumento, Double.Parse(Convert.ToString(pExistente.existencia)), codigoAlmacen); } resultado = resultado * -1; pExistente.existencia = 0; cantidadSalidaContpaq = resultado; pExistente.modificar(pExistente); } else { pExistente.existencia = resultado; if (cont == 1) { success = movimientoAlmacen(pExistente, lIdDocumento, Double.Parse(txtCantidad.Text), codigoAlmacen); } else { success = movimientoAlmacen(pExistente, lIdDocumento, cantidadSalidaContpaq, codigoAlmacen); } pExistente.modificar(pExistente); break; } } if (success == true) { salida.registrar(salida); MessageBox.Show("SE REGISTRO LA SALIDA DE: " + salida.cantidad + " " + unidad.nombre + " \nDEL INSUMO: " + cbxInsumo.SelectedItem.ToString() + "\nPOR LA RAZÓN: " + salida.descripcion, "AVISO SHARK"); } } else { MessageBox.Show("LA CANTIDAD QUE DESEA MARCAR COMO SALIDA ES MAYOR AL NÚMERO DE EXISTENCIA EN SU ALMACÉN"); } }
private void btnguardarMovimiento_ItemClick(object sender, DevExpress.Xpf.Bars.ItemClickEventArgs e) { if (cbxMovimiento.SelectedItem != null) { Tipo_movimiento tipo = new Tipo_movimiento(); Presentacion presentacion = new Presentacion(); Salida_almacen salida = new Salida_almacen(); Insumo _insumo = insumo.obtener(cbxInsumo.SelectedItem.ToString()); double totalExistencia = 0; double folio = 0; StringBuilder serie = new StringBuilder(12); salida.cantidad = Double.Parse(txtCantidad.Text); salida.Insumo = _insumo; salida.Tipo_movimiento = tipo.obtener(cbxMovimiento.SelectedItem.ToString()); salida.descripcion = txtDescripcion.Text; if (cbxAlamcenAfectado.SelectedItem != null) { salida.Almacen = almacen.obtener(cbxAlamcenAfectado.SelectedItem.ToString()); } else if (cbxAOrigen.SelectedItem != null) { salida.Almacen = almacen.obtener(cbxAOrigen.SelectedItem.ToString()); } List <Presentacion> presentaciones = presentacion.obtenerPorInsumoAlmacen(salida.Insumo.id, salida.Almacen.id); foreach (var item in presentaciones) { totalExistencia += Double.Parse(Convert.ToString(item.existencia)); } if (cbxMovimiento.SelectedItem.ToString() == "SALIDA") { //sdk SDK.fSiguienteFolio("35", serie, ref folio); Int32 lIdDocumento = crearDocumento("35", folio); if (cbxAlamcenAfectado.SelectedItem != null && cbxInsumo.SelectedItem != null && !String.IsNullOrEmpty(txtCantidad.Text) && !String.IsNullOrEmpty(txtDescripcion.Text)) { //proceso para una salida de almacen salidaAlmacen(totalExistencia, presentaciones, lIdDocumento, salida, salida.Almacen.codigo); } clearFields(); } else { SDK.fSiguienteFolio("35", serie, ref folio); if (cbxPresentaciones.SelectedItem != null && cbxInsumo.SelectedItem != null && cbxAOrigen.SelectedItem != null) { if (totalExistencia >= Convert.ToDouble(txtCantidad.Text)) { salida.descripcion = tipo.nombre; Int32 lIdDocumentoSalida = crearDocumento("35", folio); salidaAlmacen(totalExistencia, presentaciones, lIdDocumentoSalida, salida, salida.Almacen.codigo); if (salida.id > 0) { SDK.fSiguienteFolio("34", serie, ref folio); EntradaPresentacion entrada = new EntradaPresentacion(); DateTime thisDay = DateTime.Today; entrada.fecha_registro = Convert.ToDateTime(thisDay.ToString()); entrada.Presentacion = presentacion.get(cbxPresentaciones.SelectedItem.ToString()); entrada.Almacen = almacen.obtener(cbxADestino.SelectedItem.ToString()); entrada.cantidad = Double.Parse(txtCantidad.Text); Int32 lIdDocumentoEntrada = crearDocumento("34", folio); if (movimientoAlmacen(entrada.Presentacion, lIdDocumentoEntrada, Double.Parse(txtCantidad.Text), entrada.Almacen.codigo) == true) { entrada.registrar(entrada); MessageBox.Show("SE TRASPASÓ: " + txtCantidad.Text + " " + unidad.nombre + "\nDEL INSUMO: " + _insumo.descripcion + "\nDEL ALMACÉN: " + cbxAOrigen.SelectedItem.ToString() + "\nAL ALMACÉN: " + cbxADestino.SelectedItem.ToString()); clearFields(); } } } else { MessageBox.Show("LA CANTIDAD QUE DESEA MARCAR COMO SALIDA ES MAYOR AL NÚMERO DE EXISTENCIA EN SU ALMACÉN"); } } } } else { MessageBox.Show("Es Necesario especificar el tipo de movimiento que desea hacer"); } }