Foros del Web » Programando para Internet » PHP »

Descontar x cantidad

Estas en el tema de Descontar x cantidad en el foro de PHP en Foros del Web. Hola, buenas. Tengo un sistema de inventario que no fue creado por mi pero estoy intentando modificarle algunas cosas. Hay una opción que se llama ...
  #1 (permalink)  
Antiguo 02/05/2017, 12:54
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Descontar x cantidad

Hola, buenas. Tengo un sistema de inventario que no fue creado por mi pero estoy intentando modificarle algunas cosas. Hay una opción que se llama "Utilidades" dentro del sistema, es la suma de comisiones de cada vendedor, lo que yo quisiera saber es cómo hago para descontarle x cantidad a ese número, osea, tener la opción de poder descontar ese número:


Se utiliza este código en esa parte:
Código:
<?php
$u = null;
if( Session::getUID() != "" && !empty( $_GET["id"] ) ):

	$u = UserData::getById( Session::getUID() );
    $user = $u->name." ".$u->lastname;
    $client_id = $_GET["id"];
    $client = ClientData::getById( $client_id );
    $cliente = false;
elseif( Session::getUID() != "" && empty( $_GET["id"] ) ):

	$u = UserData::getById( Session::getUID() );
    $user = $u->name." ".$u->lastname;
    
    $client = ClientData::getByIdUser( $u->id );
    $client_id = $client->id;
    $cliente = true;
else:

	print "<script>window.location='index.php';</script>";
endif;
?>
<div class="row">
	<div class="col-md-12">
		<h1><i class='fa fa-clock-o'></i> <?php echo $client->name." ".$client->lastname; ?> </h1>
		<br>

		<?php
		$products = array();
		if(isset($_GET["start_at"]) && $_GET["start_at"]!="" && isset($_GET["finish_at"]) && $_GET["finish_at"]!=""){

			if($_GET["start_at"]<$_GET["finish_at"]){
				
				$products = OperationData::getAllByClientIdAndRange( $client->id,$_GET["start_at"], $_GET["finish_at"] );
			}
		}
		else{
			
			$products = OperationData::getAllByClientId( $client->id );
		}
		$comision_total = 0;
		if( count( $products ) > 0 ){
			?>
			<br>
			<table class="table table-bordered table-hover	">
				<thead>
					<th>Clave</th>
					<th>Precio de Venta</th>
					<th>Precio de Costo</th>
					<th>Fecha del pedido</th>
					<th>Comisión</th>
					<? 
                	if( $u->is_admin == 1 ):?>
						<th></th>
					<?
					endif;?>
				</thead>
				<?php 
				#echo "<pre>";print_r( $products );echo "</pre>";
				foreach($products as $sell):


					#$item = $sell->getItem();
					$book = BookData::getById( $sell->book_id );
					?>
					<tr>
						<td>
						<?php echo $book->isbn; ?>
						</td>
						<td><?php echo $book->cantidad; ?></td>
						<td><?php echo $book->precio_costo; ?></td>
						<td><?php echo $sell->start_at; ?></td>
						<td>
							<?
							$comision = $book->cantidad - $book->precio_costo;
							if( $comision >= 80 ){

								echo '$40';
								$comision_total = 40 + $comision_total;
							}
							else{

								echo '$20';
								$comision_total = 20 + $comision_total;
							}
							?>
						</td>
						<? 
                		if( $u->is_admin == 1 ):?>
							<td>
								<a href="index.php?action=delorder&id=<?php echo $sell->id;?>" class="btn btn-danger btn-xs">Eliminar</a>
							</td>
						<?
						endif;?>
					</tr>
				<?php
				endforeach; ?>
			</table>

			<div class="clearfix"></div>
			<?php
		}
		else{
			?>
			<p class="alert alert-danger">No hay pedidos.</p>
			<?php
		}
		$inventario = OperationData::getInventory( $client->id );
		$list_inventario = OperationData::Discount_list( $client->id );
		$inventario_sum = OperationData::Discount_sum( $client->id );
		$initial_vendedor = ClientData::getById( $client->id );
		?>
		<div class="row">
			<div class="col-lg-3">
				Inventario Inicial<br>
				<?
				if( !$cliente ):?>
					<form action="index.php?action=updateinventory" method="post">
						<input id="vendedor" type="hidden" name="vendedor" value="<?= $client->id ?>">
						<input required id="invetory_initial" type="text" name="invetory_initial" value="<?= $initial_vendedor->initial_inventory ?>">
						<button type="submit" class="btn btn-success">Editar</button>
					</form>
				<?
				else:?>
					<h3>$<?= $initial_vendedor->initial_inventory ?></h3>
				<?
				endif;?>
			</div>
			<div class="col-lg-2">
				Pedidos Realizados: <h3> $<?= ( empty( $inventario[0]->total ) ) ? 0 : $inventario[0]->total ?></h3>
			</div>
			<div class="col-lg-2">
				Abonos: <h3> $<?= ( empty( $inventario_sum[0]->total ) ) ? 0 : $inventario_sum[0]->total ?></h3>
			</div>
			<div class="col-lg-2">
				Deuda Total: <h3>$<?= ( ( $initial_vendedor->initial_inventory + $inventario[0]->total ) - $inventario_sum[0]->total ) ?></h3>
			</div>
			<div class="col-lg-2">
				<label><font color='red'>Utilidades:</font></label> <font color='red'><h3> $<?= $comision_total ?></h3></font>
			</div><br>
		</div>
		<?
		if( count( $list_inventario ) > 0 ){?>
			<div class="row">
				<h3 class="col-lg-4 col-lg-offset-4">Lista de Abonos:</h3><br>
				<?
				if( count( $list_inventario ) > 0 ){
					?>
					<br>
					<table align="center" class="table table-bordered table-hover">
						<thead>
							<th>Abono:</th>
							<th>Fecha del Abono:</th>
						</thead>
						<?php 
						foreach($list_inventario as $list_inventario):
							?>
							<tr>
								<td>
									<?php echo $list_inventario->discount_valor; ?>
								</td>
								<td>
									<?php echo $list_inventario->discount_date; ?>
								</td>
							</tr>
						<?php
						endforeach; ?>
					</table>
					<?php
				}?>
			</div>
		<?
		}
		if( !$cliente ):?>
			<div>
				<form action="index.php?action=addiscount" method="post">
					<input id="cliente" name="cliente" type="hidden" value="<?= $client->id ?>">
					<label>Abono: </label>
					<input required id="discount_n" type="text" name="discount_n">
					<button type="submit" class="btn btn-success">Abonar</button>
				</form>
			</div>
		<?
		endif;?>
		<div class="clearfix"></div>
		<br><br><br><br><br><br><br><br><br><br>
	</div>
</div>
Cómo puedo hacerlo?, gracias de antemano.

Saludos.
  #2 (permalink)  
Antiguo 03/05/2017, 20:37
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Descontar x cantidad

Si tuvieramos todas las variables te responderiamos rapidamente pero una ecuacion no puede resolverse si no tenemos todas las variables.

Primero, qué es lo que le quieres descontar? De saberlo nosotros, te indicariamos. Pero falta codigo ahi, de todas formas ese formulario se crea a partir de unas tablas en la base de datos, con lo cual, investiga qué clase se encarga de calculas las utilidades y ahí es donde le tienes que descontar lo que deseas. No se te puede ayudar mas.

Tienes que investigar.
  #3 (permalink)  
Antiguo 04/05/2017, 10:15
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Descontar x cantidad

"Es la suma de comisiones de cada vendedor, lo que yo quisiera saber es cómo hago para descontarle x cantidad a ese número"

Por lo que entendí, y sería algo puramente matemático:

La utilidad es:
utilidad = cantidad*descuentoPorCantidad

Y el total descontado:
total = total - utilidad

Y listo.
  #4 (permalink)  
Antiguo 04/05/2017, 13:18
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Descontar x cantidad

Cita:
Iniciado por alvaro_trewhela Ver Mensaje
"Es la suma de comisiones de cada vendedor, lo que yo quisiera saber es cómo hago para descontarle x cantidad a ese número"

Por lo que entendí, y sería algo puramente matemático:

La utilidad es:
utilidad = cantidad*descuentoPorCantidad

Y el total descontado:
total = total - utilidad

Y listo.
En principio sería solamente matemático aunque es posible que tengan que interferir datos de la base de datos para poder especificar qué cantidad exacta se tiene que descontar pues por lo general, cada tipo de producto suele tener un descuento particular a menos que en tu caso sea un descuento general independientemente del valor y tipo de cada producto.
  #5 (permalink)  
Antiguo 06/05/2017, 00:59
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Descontar x cantidad

Bueno, la utilidad se obtiene sumando la comisión de los productos. Ahora, cuando se paga esa utilidad a los vendedores es cuando ese número debe descontarse (la cantidad que se pague). Como mencioné, es un sistema gratuito que encontré en internet y que estoy modificando pero ya no encuentro la forma de aplicar esto. Les muestro el sistema y la base de datos actual: https://mega.nz/#!7chmSLwC!hr30QNhit...lJuVWdAqs9si68

Se los envío para que se den una idea más detallada de dónde está lo que intento hacer, no pido que resuelvan mi problema haciéndolo, sólo que me ayuden a saber qué debo hacer para realizar lo que pregunto..

Espero puedan apoyarme, saludos!
  #6 (permalink)  
Antiguo 07/05/2017, 14:47
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Descontar x cantidad

"la utilidad se obtiene sumando la comisión de los productos"

Entiendo entonces, que si cada producto tiene una constante de comisión, en teoría deberías multiplicar esa constante por la cantidad de dicho producto, y la sumas a la utilidad:

utilidad = 0
utilidad += cantidadProducto1*comisionProducto1
utilidad += cantidadProducto2*comisionProducto2
...
utilidad += cantidadProductoN-1*comisionProductoN-1
utilidad += cantidadProductoN*comisionProductoN

Ahí tienes la utilidad, creo...
  #7 (permalink)  
Antiguo 08/05/2017, 15:18
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Descontar x cantidad

Cita:
Iniciado por alvaro_trewhela Ver Mensaje
"la utilidad se obtiene sumando la comisión de los productos"

Entiendo entonces, que si cada producto tiene una constante de comisión, en teoría deberías multiplicar esa constante por la cantidad de dicho producto, y la sumas a la utilidad:

utilidad = 0
utilidad += cantidadProducto1*comisionProducto1
utilidad += cantidadProducto2*comisionProducto2
...
utilidad += cantidadProductoN-1*comisionProductoN-1
utilidad += cantidadProductoN*comisionProductoN

Ahí tienes la utilidad, creo...
Me parece que no comprendiste...lo que pasa es que ya está la utilidad, no ocupo crearla, lo que ocupo es que exista una opción para restar x cantidad a esa utilidad, me doy a entender?
  #8 (permalink)  
Antiguo 08/05/2017, 21:19
jhonnyalexander_91
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Descontar x cantidad

Buenas,

Me gustaría empezar comentando que el código huele bastante mal por todo lado y quizá no sea muy apropiado para usar en producción, sin embargo no es el objetivo de su pregunta con lo cual procedo a decir:

Echando una vista rápida se evidencia que la "utilidad" se calcula al vuelo, lo cual puede resultar en problemas de integridad de información si se cambia algo de la DB, aunque lo veo un poco complicado y al parecer ese está haciendo con precios de una transacción, en este caso, se podría considerar "seguro".

Para descontar, yo simplemente guardaría en la DB la información de la cantidad ya pagada e imprimiría la diferencia (utilidad calculada - cantidad ya pagada) en el campo que se quiere mostrar.
  #9 (permalink)  
Antiguo 08/05/2017, 23:25
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Descontar x cantidad

Cita:
Iniciado por jhonnyalexander_91 Ver Mensaje
Buenas,

Me gustaría empezar comentando que el código huele bastante mal por todo lado y quizá no sea muy apropiado para usar en producción, sin embargo no es el objetivo de su pregunta con lo cual procedo a decir:

Echando una vista rápida se evidencia que la "utilidad" se calcula al vuelo, lo cual puede resultar en problemas de integridad de información si se cambia algo de la DB, aunque lo veo un poco complicado y al parecer ese está haciendo con precios de una transacción, en este caso, se podría considerar "seguro".

Para descontar, yo simplemente guardaría en la DB la información de la cantidad ya pagada e imprimiría la diferencia (utilidad calculada - cantidad ya pagada) en el campo que se quiere mostrar.
Sí, al parecer el código no es del todo perfecto.

Entonces, lo que debo hacer es crear una nueva tabla en la base de datos que sea la utilidad y otra que sea para el descuento..o con una bastará?

Etiquetas: cantidad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:52.