Sei sulla pagina 1di 27

FACULTAD DE INGENIERA

CARRERA DE INGENIERA DE SISTEMAS



TRABAJO FINAL


TEMA: PLANIFICACION DE SISTEMAS DE INFORMACION

INTEGRANTES:
201323354 MITANI YAURI, JOSE LUIS
201322993 MORENO RIOS, JOSE LUIS
201323454 LOPEZ SILVA, MARIA INES



ASIGNATURA:
ESTRUCTURA DE DATOS Y ALGORITMOS

PROFESOR:
SILVA UBALDO, LIZARDO

SECCIN:
E11A




Lima, 13 de febrero 2014



FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

PRESENTACION
El presente trabajo se desarrolla a partir de la situacin actual de MICRODEV S.A.C. empresa
especializada en el diseo electrnico. Se realiza la descripcin de la empresa y se analizan los
procesos de manera general, para identificar problemas y plantear soluciones. Este caso de
estudio comprende especficamente la implementacin de una estrategia que mejore las ventas
de los productos en beneficio de la organizacin, esta estrategia es la de liderazgo en costos y
diferenciacin, para la cual ser necesaria la creacin a largo plazo de un ambicioso proyecto
de ampliacin de capacidad de la planta actual.

Para la ejecucin de la estrategia mencionada se realiz el rediseo de la organizacin por lo
que se modific el organigrama en el que se incluy la gerencia de proyectos y darle mayor
nfasis al rea de ventas.

Los anlisis realizados se centraron principalmente en las carencias identificadas en los sub-
procesos mencionados, para los cuales se elaboraron los diagramas de procesos,
caracterizacin y anlisis de causa-efecto, con lo cual quedaron identificadas las causas de la
problemtica existente, y se determinaron las actividades a realizar para solucionar los
inconvenientes encontrados. Estas mejoras van desde modificacin de los trminos de
referencia e implementar una alianza con empresas de distribucin de nuestros productos
terminados.

Los principales resultados estimados a partir de esta mejora aumentaran la produccin que lo
que alcanzara para cumplir las metas propuesta por la organizacin, as como brindar un mejor
flujo de ingresos debido a la venta de nuestros productos finales. En trminos econmicos, se
estima como resultado un incremento que asciende los 120 mil nuevos soles al ao.




FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

1. OBJETIVOS DEL TRABAJO

Automatizar el Proceso de Ventas y apoyo a logstica para llevar un mejor control del
stock de los productos en el almacn, es decir, los productos vendidos y devueltos
actualizarn en lnea dicho stock, as mismo informar los productos que estn a punto
de quedar con el stock mnimo para que logstica pueda hacer las compras oportunas.
Adems el software brindar informacin detallada de las ventas y devoluciones del da.
Tambin se llevar un control de las ventas pagadas y ventas a credito, esta
informacin es muy importante para el rea de administracin.

2. DESCRIPCION DE LA EMPRESA

MICRODEV S.A.C.






2.1 DESCRIPCION

Creada el 17 de abril del 2007, empresa especializada en el diseo electrnico. Se
dedica exclusivamente al diseo y desarrollo electrnico en sus distintas reas,
contando con experiencia en diversos desarrollos y diseos electrnicos
comerciales en circulacin por varios pases de Sud-Amrica, Centro Amrica e
incluso Norte Amrica.


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

2.2 ACTIVIDAD

Fabricacin, distribucin y venta de productos elctricos y electrnicos.

3. ORGANIGRAMA

GERENCIA GENERAL
ADMINISTRACION
DESARROLLO VENTAS PRODUCCION ALMACEN


4. PROCESOS

4.1 Proceso de Venta

4.1.1 Catlogo de producto

El vendedor empezara la atencin al cliente, mostrndole la gama de
productos con los que se cuenta. Indicndole los beneficios de cada
equipo, as como sus precios.



FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

4.1.2 Pedidos a produccin
Si los tems seleccionados por el cliente no se encuentran en stock, el
vendedor generara una Orden de Pedido, para poder contar con el stock
necesario para el despacho del pedido.

4.1.3 Registro de clientes
Cuando un cliente es atendido, el vendedor proceder a buscar sus
datos en el sistema, si este no existe deber crear un registro nuevo.

4.1.4 Emisiones de Orden de pedido del cliente
Se emitir a las reas de administracin y almacn la cotizacin (orden
de venta) del cliente para su respectiva verificacin de la cancelacin y
despacho.

4.1.5 Emisin de los comprobantes de pago
Cuando almacn ha atendido el pedido del cliente, ventas emitir la
respectiva documentacin que acompaara el paquete (Facturas, Guas
de remisin).

4.1.6 Entrega de los productos al cliente
El vendedor coordinara la entrega del pedido a la direccin pactada
previamente.

Cuando los pedidos son entregados en Lima (Provincia), estos no
representaran un gasto adicional por transporte. Pero para los dems
casos, se incrementara un costo por flete sobre la factura del cliente.




FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

4.2 Proceso de Administracin

4.2.1 Verificacin de las cancelaciones del cliente
La secretaria se encargara de las verificaciones de las cancelaciones de
los pedidos pactadas con el cliente. Para ello deber utilizar la orden de
pedido del cliente y har las consultas del caso a las cuentas de la
empresa (verificacin de depsitos).

4.2.2 Descuentos
Si un cliente lleva productos por un valor mayor a los S/10,000, a este se
le podr ofrecer descuentos que van desde el 5% al 20% dependiendo
del volumen final.

4.2.3 Crdito
Dependiendo del record de compras del cliente, se les podr otorgar
facilidades de 60 das de pago a los mejores clientes.

4.3 Procesos logsticos

4.3.1 Recepcin de la Orden de Venta
El almacn verificara en su mdulo de pedidos, las cotizaciones que
estn autorizadas por la administracin, para su respectivo despacho.

4.3.2 Consulta de stock disponible
Tomando la hoja de pedido del cliente, el operador de almacn, har
una consulta del stock disponible, para su despacho.




FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

4.3.3 Pedido de productos a Produccin
En los casos en que un cliente haya solicitado un producto que no se
tiene en el almacn, el operador deber emitir una orden de
produccin, para poder contar con el stock necesario para el despacho
de los pedidos.

4.3.4 Picking
Teniendo ya el stock disponible se proceder con el picking
(preparacin del pedido), segn especificaciones de la orden de venta.

5. AREA DONDE OCURRE EL PROBLEMA

Las reas donde ocurren los problemas son: Ventas y Almacn.

6. DESCRIPCION DEL PROBLEMA

Registro manual de las ventas, falta de control del stock del producto en el almacn lo cual
retrasa las compras de logstica. Adems no se tiene un control de las ventas y
devoluciones de productos tampoco de los clientes morosos.

7. DESCRIPCION DE LA SOLUCION PLANTEADA

Implementar un software que automatice el registro de las ventas y devoluciones, y al
mismo tiempo actualizar el stock de los productos en el almacn.

8. ALGORITMO O CODIGO FUENTE DE LA SOLUCION
Cdigo fuente est grabado en la sgte ruta: CD\Fuentes


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

VENTAS.JAVA

package ventas;
import java.util.HashSet;
import javax.swing.JOptionPane;
/**
* Autor: Ins Lpez Silva
* Jose Mittani
* Jose Moreno
*/
import java.util.Scanner;

public class ListaRegVentas {
RegVenta inicio, nuevo, p, q; //Los aributos son privados
String detalle[][]=new String[100][6];
String[][] arrProd={{"01","VELOCIMETRO GPS 400", "350","50","5"},
{"02","VELOCIMETRO 100","250","120","50"},
{"03","PANELES LDS","300","1000","5"}};
String[][] arrCli={{"001","JOSE MORENO", "10101010","AV. PERU 2011"},
{"002","INES LOPEZ","10673146","AV. LIMA 4511"},
{"003","EDUARDO SANTIAGO","20202020","JR. LOS ALAMOS 5011"}};
Scanner objScanner = new Scanner (System.in);


double nTotalDoc;
int nNroDoc=0,posicion=0;

public void mostrarA(){


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

for (int i=0;i<4;i++)
for(int j=0;j<5;j++)
System.out.println(" "+detalle[i][j]);
}

public String ReporteporFecha(String Fecha){
String cadena= " ";int cont=0;
if (inicio!=null){
p=inicio;
while (p!=null){
if (Fecha.equalsIgnoreCase(p.getFecha())){
cont++;
System.out.println("Numero de Factura : " + p.getCodDoc());
System.out.println("Fecha de Factura : " + p.getFecha());
System.out.println("Forma de Pago : " + p.getFormaPago());
System.out.println("Total Pagado : " + p.getTotalPagar());
}
p=p.getSgte();
}

}
if (cont > 0)
System.out.println("Se encontro " + cont + " coincidencias en la fecha ingresada ");
else
System.out.println("No Existe Facturas registradas con la fecha " + Fecha );

return cadena;
}


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS


public String obtienelistaTotales(){
String cadena = "";
if (inicio!=null){
p=inicio;
while (p!=null){
cadena = cadena +p.getTotalPagar()+" ";
p = p.getSgte();
}
}
return cadena;
}
public String obtienelistaCantidad(){
String cadena = "";
if (inicio!=null){
p=inicio;
while (p!=null){
cadena = cadena +p.getCantidad()+" ";
p = p.getSgte();
}
}
return cadena;
}
public String obtienelistaPunitario(){
String cadena = "";
if (inicio!=null){
p=inicio;
while (p!=null){


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

cadena = cadena +p.getPrecioUnitario()+" ";
p = p.getSgte();
}
}
return cadena;
}
public void IngresaProductos(){
double nPreUni,nCantTotalProd;
String cCodProd, cDescProd,cRpta="S" ;
int nCant = 0, ind = -1 ;
// Scanner objScanner = new Scanner (System.in);

while (cRpta.equals("S") ){

detalle[posicion][0]="00000"+Integer.toString(nNroDoc);
while (ind==-1){
//System.out.println("Ingrese Cod. Prod");
cCodProd = JOptionPane.showInputDialog("Ingrese Codigo de Producto");
ind = BuscarProducto(cCodProd );
if (ind == -1)
JOptionPane.showMessageDialog(null,"Codigo de Producto Ingresado No
Existe");
//System.out.println("Cdigo Producto No existe");
else{
cDescProd=arrProd[ind][1];
nPreUni=Double.parseDouble(arrProd[ind][2]);
System.out.println("Descripcin Producto:"+cDescProd+ " Precio
Unitario:"+arrProd[ind][2]


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

+ " Stock Actual:"+arrProd[ind][3]);
nuevo.setCodProd(cCodProd);
nuevo.setDescProd(cDescProd);
nuevo.setPrecioUnitario(nPreUni);
detalle[posicion][1]=cCodProd;
ValidaStockProdcuto(ind);
detalle[posicion][2]=Integer.toString(nuevo.getCantidad());
detalle[posicion][3]=Double.toString(nPreUni);
nCantTotalProd=nuevo.getCantidad()*nPreUni;
System.out.println("Total por Producto:"
+ String.valueOf(nCantTotalProd));
nuevo.setCantidadTotal(nCantTotalProd);
detalle[posicion][4]=Double.toString(nCantTotalProd);
nTotalDoc=nTotalDoc+nCantTotalProd;
detalle[posicion][5]="Activo";
}
}
//System.out.println("Desea continuar ingresando productos? S/N");
cRpta = JOptionPane.showInputDialog("Desea continuar ingresando productos?
S/N");
//objScanner.nextLine();
ind=-1;
posicion++;
}
}

public int BuscarProducto(String pCodProd ){
int indice = -1;


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

for (int i=0; i<=arrProd.length-1; i++) {
if ( arrProd[i][0].equals(pCodProd)){
return i;
}
}
return indice;
}

private void ValidaStockProdcuto(int pIndarrProd){
boolean bContinua=true;int nCant,nStock ;
Scanner objScannerS = new Scanner (System.in);


nStock = Integer.parseInt(arrProd[pIndarrProd][3]);
bContinua=true;
while (bContinua==true){
//System.out.println("Ingrese Cantidad:");
nCant = Integer.parseInt(JOptionPane.showInputDialog("Ingrese Cantidad"));//
Integer.parseInt(objScannerS.nextLine());
if (nStock==0){
JOptionPane.showMessageDialog(null,"No hay Stock Disponible para el
producto");
IngresaProductos();
bContinua=false;
}
else{
if (nCant>nStock){


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

JOptionPane.showMessageDialog(null,"La Cantidad supera el Stock actual" +
arrProd[pIndarrProd][3] );
//System.out.println("La Cantidad supera el stock actual " +
arrProd[pIndarrProd][3]);
}
else{
nStock=nStock-nCant;
arrProd [pIndarrProd][3]=Integer.toString(nStock);
//Actualiza stock actual
nuevo.setCantidad(nCant);
if (nStock <= Double.parseDouble(arrProd [pIndarrProd][4]))
JOptionPane.showMessageDialog(null,"Alerta: El Stock Actual es menor al
minimo : " + arrProd[pIndarrProd][4] );
//System.out.println("Alerta: El Stock actual es menor "
// + "al mnimo:" + arrProd[pIndarrProd][4]);
bContinua=false;
}
}
}
}

public int BuscarCliente(String pNroDocCli ){
int indice = -1;
for (int i=0; i<=arrCli.length-1; i++) {
if ( arrCli[i][2].equals(pNroDocCli)){
return i;
}
}


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

return indice;
}
public int longitudDetalle(){
int i=0,j=0;
while(detalle[j][0]!=null)
{i++;j++;}
return i;
}
public void reporteProducto(){
int longitud=longitudDetalle();int c1=0,c2=0,c3=0;
double p1=0,p2=0,p3=0;
for(int i=0;i<longitud;i++)
if(detalle[i][5].equals("Activo")){
switch(detalle[i][1]){
case "01":
c1=c1+Integer.parseInt(detalle[i][2]);
p1=p1+Double.parseDouble(detalle[i][4]);
case "02":
c2=c2+Integer.parseInt(detalle[i][2]);
p2=p2+Double.parseDouble(detalle[i][4]);
case "03":
c3=c3+Integer.parseInt(detalle[i][2]);
p3=p3+Double.parseDouble(detalle[i][4]);
}
}
System.out.println("Cantidad de Productos Vendidos "+arrProd[0][1]+": "+c1+ "
Unidades");
System.out.println("Costo Total: "+p1);


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

System.out.println("Cantidad de Productos Vendidos "+arrProd[1][1]+": "+c2+ "
Unidades");
System.out.println("Costo Total: "+p2);
System.out.println("Cantidad de Productos Vendidos "+arrProd[0][1]+": "+c3+ "
Unidades");
System.out.println("Costo Total: "+p3);
}
public void eliminaDoc(String Doc){
int longitud=longitudDetalle();int stock,cantidad,llave=0;
for(int i=0;i<longitud;i++){
if(detalle[i][0].equals(Doc)){
for(int j=0;j<3;j++)
if(arrProd[j][0].equals(detalle[i][1]))
{ stock= Integer.parseInt(arrProd[j][3]);
cantidad=Integer.parseInt(detalle[i][2]);
stock=stock+cantidad;
arrProd[j][3]=Integer.toString(stock);
}
detalle[i][5]="Anulado";
}
}
if(inicio!=null){
if(inicio.getSgte()==null){
if(inicio.getCodDoc().equals(Doc)){
inicio=null;
JOptionPane.showMessageDialog(null,"Registro " + Doc + " Eliminado
Correctamente");}
else


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

//System.out.println("No se Encontro Documento a Eliminar");
JOptionPane.showMessageDialog(null,"No se Encontro Documento a Eliminar");
}
else{
p=inicio;
if (p.getCodDoc().equals(Doc))
inicio=inicio.getSgte();
else{
while(llave==0){
q=p;
p=p.getSgte();
if(p.getCodDoc().equals(Doc))
{q.setSgte(p.getSgte());
JOptionPane.showMessageDialog(null,"Registro " + Doc + " Eliminado
Correctamente");
llave=1;
}}
if (p.getSgte()==null)
{llave=1;
JOptionPane.showMessageDialog(null,"No se Encontro Documento a Eliminar");
//System.out.println("No se Encontro Documento a Eliminar");}
}
}
}}
}
public void InsertaRegVenta ( ){
String cFecha,cNroDocCli,cCodCli,cRpta="S",cFormaPago="E";
int indCli=-1;


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

// Scanner objScanner = new Scanner (System.in);


while (cRpta.equals("S")){
nuevo = new RegVenta();
nNroDoc=nNroDoc+1;
System.out.println("Nro Factura: "+"00000"
+ Integer.toString(nNroDoc));
nuevo.setCodDoc("00000"+Integer.toString(nNroDoc));
detalle[posicion][0]="00000"+Integer.toString(nNroDoc);
// System.out.println("Ingrese Fecha Venta:");
cFecha = JOptionPane.showInputDialog("Ingrese Fecha Venta:");
//objScanner.nextLine();
nuevo.setFecha(cFecha);
//System.out.println("Ingrese Nro.Doc.Cliente:");
cNroDocCli= JOptionPane.showInputDialog("Ingrese
Nro.Doc.Cliente:");//objScanner.nextLine();
indCli=BuscarCliente(cNroDocCli);

if (indCli!=-1){
System.out.println("Cliente:" + arrCli[indCli][0]+
" - " +arrCli[indCli][1]+
" Direccin:"+arrCli[indCli][3] );
nuevo.setCodCliente(arrCli[indCli][0]);
}
else
JOptionPane.showMessageDialog(null,"El cliente no existe en el Sistema, favor
registrarlo");


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

//System.out.println("Cliente No existe en el Sistema.. "
// + "favor registrarlo" );

IngresaProductos ();
//System.out.println("Forma de pago: Efectivo o Credito= E/C ?");
cFormaPago = JOptionPane.showInputDialog("Forma de pago: Efectivo o
Credito= E/C ?"); //objScanner.nextLine();
nuevo.setFormaPago(cFormaPago);

if (inicio == null)
inicio = nuevo;
else { p = inicio;
while(p.getSgte() != null )
p = p.getSgte();
p.setSgte( nuevo );

}

System.out.println("Total a Pagar: S/."
+ Double.toString(nTotalDoc));
nuevo.setTotalPagar(nTotalDoc);
nTotalDoc=0;
// System.out.println("Desea ingresar otro documento? S/N");
cRpta = JOptionPane.showInputDialog("Desea ingresar otro documento? S/N");
//objScanner.nextLine();
}
}
}


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS


REGVENTA.JAVA

/*
* Trabajo Final: Estrucutra de Datos
*/

package ventas;

public class RegVenta {
private String CodDoc;
private String Fecha;
private String CodProd;
private String DescProd;
private String CodCliente;
private int Cantidad;
private double PrecioUnitario;
private double CantidadTotal;
private String FormaPago;
private double TotalPagar;
private RegVenta sgte;

public String getCodDoc() {
return CodDoc;
}

public void setCodDoc(String CodDoc) {
this.CodDoc = CodDoc;


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

}
public String getFecha() {
return Fecha;
}

public void setFecha(String Fecha) {
this.Fecha = Fecha;
}

public String getCodProd() {
return CodProd;
}

public void setCodProd(String CodProd) {
this.CodProd = CodProd;
}

public String getDescProd() {
return DescProd;
}

public void setDescProd(String DescProd) {
this.DescProd = DescProd;
}
public double getPrecioUnitario() {
return PrecioUnitario;
}



FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

public void setPrecioUnitario(double PrecioUnitario) {
this.PrecioUnitario = PrecioUnitario;
}
public String getCodCliente() {
return CodCliente;
}

public void setCodCliente(String CodCliente) {
this.CodCliente = CodCliente;
}

public int getCantidad() {
return Cantidad;
}

public void setCantidad(int Cantidad) {
this.Cantidad = Cantidad;
}

public double getCantidadTotal() {
return CantidadTotal;
}

public void setCantidadTotal(double CantidadTotal) {
this.CantidadTotal = CantidadTotal;
}

public String getFormaPago() {


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

return FormaPago;
}
public void setFormaPago(String FormaPago) {
this.FormaPago = FormaPago;
}

public double getTotalPagar() {
return TotalPagar;
}
public void setTotalPagar(double TotalPagar) {
this.TotalPagar = TotalPagar;
}

public RegVenta getSgte() {
return sgte;
}

public void setSgte(RegVenta sgte) {
this.sgte = sgte;
}

}

VENTAS.JAVA


package ventas;
/**


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

* @author Ins Lpez Silva.
* Jose Mittani Yauri
* Jose Moreno Rios
*/
import java.util.Scanner;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;

public class Ventas {
public static void Menu(ListaRegVentas vtas){
int N=0;
String entrada, Fecha, NDoc;
entrada = JOptionPane.showInputDialog("Ingrese el numero de elemento que desea
ejecutar\n\n 1. Registro de Ventas \n 2. Reporte de ventas por fecha \n 3. Reporte de
productos vendidos \n 4. Registro de Anulaciones \n 5.Salir \n");
//System.out.println(N);
//if (Integer.parseInt(entrada) > 0) {
N = Integer.parseInt( entrada );
switch (N) {
case 1:
vtas.InsertaRegVenta();
Menu(vtas);
break;
case 2:
Fecha = JOptionPane.showInputDialog("Introduzca la Fecha del reporte");
vtas.ReporteporFecha(Fecha);
Menu(vtas);
break;


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

case 3:
vtas.reporteProducto();
Menu(vtas);
break;
case 4:
NDoc = JOptionPane.showInputDialog("Introduzca el documento a anular");
vtas.eliminaDoc(NDoc);
Menu(vtas);
break;
case 5:
JOptionPane.showMessageDialog(null,"Gracias por usar el sistema");
break;
case 0:
break;
default:
JOptionPane.showMessageDialog(null,"Numero ingreso incorrecto");
break;

}
}

public static void main(String[] args) {
ListaRegVentas vtas = new ListaRegVentas();

JOptionPane.showMessageDialog(null,"Bienvenido al Sistema de Ventas");
Menu(vtas);

}


FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS

}


9. PANTALLAS PRINCIPALES DE LA EJECUCUION DE LA SOLUCION





FACULTAD DE INGENIERA
CARRERA DE INGENIERA DE SISTEMAS



10. CONCLUCIONES Y RECOMENDACIONES

Se recomienda la compra de 2 PCs e implementar el software para que agilice la
atencin a los clientes.

11. REFERENCIAS Y BIBLIOGRAFIA UTILIZADA