#!/usr/local/bin/perl -W

$C = 50; # coste unitario de compra
$D = 1000; # demanda anual en unidades
$S = 3;   # coste fijo por ordenar un pedido
$i = 0.05;    # tipo de interés para calcular el coste de inventario
$H = $C*$i; # coste unitario de tener inventario

$Q = sqrt(2*$D*$S/$H);  # Qopt lote óptimo según modelo de Wilson 

$Cd = 48;  # coste unitario con descuento procedente de una oferta   
$Qd = 5; # lote en unidades de la oferta
$Hd = $Cd*$i;

$CC = $C*$D;  # coste de la compra anual
$CS = $S*$D/$Q; # coste de los pedidos al año
$CH = $H*$Q/2;  # coste anual del inventario medio
$CT = $CC + $CS + $CH; # coste total

$CTd_ant = 9e99;
print "Q -> coste\n";
for ($i = $Qd; ; $i+= $Qd){ 
    $CCd = $Cd*$D;
    $CSd = $S*$D/$i;
    $CHd = $Hd*$i/2;
    $CTd = $CCd + $CSd + $CHd;
    print "$i -> $CTd\n";
    last if ($CTd>$CTd_ant);
    $CTd_ant = $CTd;
    $count++;
}
$j = $i -$Qd;

print "Coste total (EOQ=$Q)       = $CT\n";
print "Coste por lotes descuento  = $CTd_ant\n";

if ($CTd_ant < $CT){
    print "Cómprese según la oferta con descuento, $j ($count x $Qd)\n";
    print "aproximadamente cada ", int(365*$j/$D), " días\n";
}else{
    print "Comprar $Q\n";
    print "aproximadamente cada ", int(365*$Q/$D), " días\n";
}
    
__END__
