He estado luchando con este problema toda la noche y no he podido solucionarlo ya que soy muy novato aun y cuando tengo mucho código en mi vista no puedo ver muy bien que es lo que estoy haciendo mal.
Primero probé mostrando las características de la venta y va todo bien. El problema llega cuando trato de registrar la venta en un objeto que tiene un array ventas. El error que me sale es:
"Exception in thread "main" java.lang.NullPointerException at Info_Compra_Venta.Ventas.RegistrarVenta(Ventas.java:20) at evaluación_3.Evaluación_3.main(Evaluación_3.java:181) C:\Users\Luis David\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53:
Java returned: 1 BUILD FAILED (total time: 48 seconds)"
public class Evaluación_3 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//Scanner
Scanner SC = new Scanner(System.in);
//Fecha
Date myDate = new Date();
String Fecha = new SimpleDateFormat("dd-MM-yyyy").format(myDate);
//CarroVentas
ArrayList <Producto> CarroVenta = new ArrayList();
//Compras
Compras compras = new Compras();
//Ventas
Ventas ventas = new Ventas();
//CarroCompras
ArrayList <Producto> CarroCompra = new ArrayList();
//Productos
ProductosProveedor productosPROV = new ProductosProveedor();
//Proveedores
Proveedor Aliexpress = new Proveedor(1,"Aliexpress","974635475" , "Calle #4" , productosPROV.CrearProductos());
Proveedor PCFactory = new Proveedor(2, "Pc Factory" , "984453246" , "Calle #5243" , productosPROV.CrearProductos());
ArrayList <Proveedor> Proveedores = new ArrayList();
Proveedores.add(Aliexpress);
Proveedores.add(PCFactory);
//Factory Method
Transaccion transaccion;
//Empresa
BodegaEmpresa Empresa = new BodegaEmpresa();
//Menu
do{
System.out.println("1- Realizar Venta"+
"\n"+"2- Realizar Compra"+
"\n"+"3- Registro de Compras"+
"\n"+"4- Registro de ventas"+
"\n"+"5- Lista Productos");
int Opcion = SC.nextInt();
switch(Opcion){
case 1:
Empresa.VerProductos();
boolean Salir = false;
do{
System.out.println("\n"+"Seleccione el ID de los productos a vender"+"\n"+"(0) Para ir al pago");
int OpcionV = SC.nextInt();
if(OpcionV !=0){
for(int i=0; i<Empresa.ArrayMiBodega().size(); i++){
if(Empresa.ArrayMiBodega().get(i).getID() == OpcionV){
Empresa.ArrayMiBodega().get(i).Catacteristicas();
System.out.print("Ingrese la cantidad a vender: ");
int OpcionC = SC.nextInt();
//Quitar el stock vendido de mi bodega
Empresa.ArrayMiBodega().get(i).QuitarStock(OpcionC);
//recuperar valores de producto vendido
int ID = Empresa.ArrayMiBodega().get(i).getID();
String Nombre = Empresa.ArrayMiBodega().get(i).getNombre();
int Precio = Empresa.ArrayMiBodega().get(i).getPrecio();
int Descuento = Empresa.ArrayMiBodega().get(i).getDescuento();
Categoria categoria = Empresa.ArrayMiBodega().get(i).getCategoria();
//Crear un producto con mismos valores
Producto ProductoV = new Producto(ID , Nombre , Precio , Descuento , OpcionC , categoria );
//AgregarProductos a carrito
CarroVenta.add(ProductoV);
}
}
}else{
Salir = true;
}
}while(Salir == false);
System.out.println("1- Cliente Persona 2- Cliente empresa");
int OpcionC = SC.nextInt();
if(OpcionC == 1){
System.out.println("Ingrese Rut cliente (Sin puntos ni guiones)");
int ID = SC.nextInt();
System.out.println("Ingrese el nombre del cliente");
String Nombre = SC.next();
System.out.println("Ingrese la direccion del cliente");
String Direccion = SC.next();
ClientePersona NuevoClienteP = new ClientePersona(ID , Nombre , Direccion);
Venta NuevaVenta = new Venta(1, Fecha , NuevoClienteP , CarroVenta); /* */
System.out.println("1- Pago credito"+"\n"+"2- Pago desposito");
int OpcionP = SC.nextInt();
/* */
if(OpcionP == 1){
System.out.println("Ingrese el tipo de tarjeta");
String TipoT = SC.next();
System.out.println("Ingrese los digitos de la tarjeta");
String Dtarjeta= SC.next();
System.out.println("Ingrese en cuantas cuotas desea pagar");
int Cuotas = SC.nextInt();
// transaccion = new PagoViaCredito().CrearPago(1);
}else{
int Total = NuevaVenta.getTotal();
System.out.println("El valor a pagar es "+Total+"\n")
;
System.out.println("Ingrese el ID de la compra");
int OpcionI = SC.nextInt();
System.out.println("Ingrese el monto a pagar");
int OpcionM = SC.nextInt();
// transaccion = new PagoViaDeposito().CrearPago();
}
ventas.RegistrarVenta(NuevaVenta);