From 94d1bc2323704b44a14ed21b989a086ce0f3eb68 Mon Sep 17 00:00:00 2001 From: adalberto Date: Fri, 4 Dec 2015 08:45:21 -0600 Subject: [PATCH 1/2] Revert "Revert "CreateInvoice"" This reverts commit 54506def6b0738e0c5dc37803a5b2ccd64f6c427. --- src/archivos/binarios/SuperMercado.java | 70 +++++++++++-------------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/src/archivos/binarios/SuperMercado.java b/src/archivos/binarios/SuperMercado.java index 3c22ac7..45d59d8 100644 --- a/src/archivos/binarios/SuperMercado.java +++ b/src/archivos/binarios/SuperMercado.java @@ -9,6 +9,8 @@ import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; +import java.util.Calendar; +import java.util.Scanner; /** * @@ -43,17 +45,18 @@ public class SuperMercado { double inte double desc */ - private RandomAccessFile rProds, rCods,rFac; + private RandomAccessFile rProds, rCods; public static final String ROOT_FOLDER = "market"; public static final int PRODUCTO_OFFSET = 0; public static final int FACTURA_OFFSET = 4; + Scanner scan = new Scanner(System.in); + public SuperMercado(){ try{ new File(ROOT_FOLDER+"/invoices").mkdirs(); rProds = new RandomAccessFile(ROOT_FOLDER+"/productos.sml","rw"); rCods = new RandomAccessFile(ROOT_FOLDER+"/codigos.sml","rw"); - rFac = new RandomAccessFile(ROOT_FOLDER+"/invoices/codigos.sml","rw"); initCodigos(); } catch(IOException e){ @@ -239,14 +242,37 @@ public InvoiceItem getProduct(int cod){ } /* - 2- Crea una nueva factua con la informacion que se + 2- Crea una nueva factura con la informacion que se recibe. NOTA: Cuando se use esta funcion deben validar que haya existencia de cada producto, o que el producto escogido exista. (30%) */ - public boolean createInvoice(String cliente, PaymentType tipo, InvoiceItem items[]){ - return false; + public boolean createInvoice(String cliente, PaymentType tipo, InvoiceItem items[]) throws IOException{ + int codFactura = getCodigo(FACTURA_OFFSET); + RandomAccessFile rFac = new RandomAccessFile(ROOT_FOLDER+"/invoices/factura_cod"+codFactura+".sml","rw"); + for(InvoiceItem item : items){ + if(getProduct(item.codigo) == null && getProduct(item.codigo).cantidad < 1) + return false; + } + Calendar today = Calendar.getInstance(); + double subtotal = 0; + rFac.seek(rFac.length()); + rFac.writeInt(codFactura); + rFac.writeLong(today.getTimeInMillis()); + rFac.writeUTF(cliente); + rFac.writeUTF(tipo.name()); + for(InvoiceItem item : items){ + rFac.writeInt(item.codigo); + rFac.writeInt(item.cantidad); + rFac.writeDouble(item.precio); + addItemToProduct(item.codigo,0-item.cantidad); + subtotal += (item.precio * item.cantidad); + } + rFac.writeDouble(subtotal); + rFac.writeDouble(subtotal*.15); + rFac.writeDouble(subtotal*tipo.discount); + return true; } /* @@ -257,39 +283,7 @@ public boolean createInvoice(String cliente, PaymentType tipo, InvoiceItem items Retorna true si existe la factura o false si no. (20%) */ - public boolean printInvoice(int codf) throws IOException{ - FileWriter fw = new FileWriter(ROOT_FOLDER+"factura_codigo_cliente.txt"); - rFac.seek(0); - while(rFac.getFilePointer() Date: Fri, 4 Dec 2015 08:54:44 -0600 Subject: [PATCH 2/2] missing parameters in createInvoice --- src/archivos/binarios/SuperMercado.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/archivos/binarios/SuperMercado.java b/src/archivos/binarios/SuperMercado.java index 45d59d8..e795215 100644 --- a/src/archivos/binarios/SuperMercado.java +++ b/src/archivos/binarios/SuperMercado.java @@ -250,7 +250,7 @@ public InvoiceItem getProduct(int cod){ */ public boolean createInvoice(String cliente, PaymentType tipo, InvoiceItem items[]) throws IOException{ int codFactura = getCodigo(FACTURA_OFFSET); - RandomAccessFile rFac = new RandomAccessFile(ROOT_FOLDER+"/invoices/factura_cod"+codFactura+".sml","rw"); + RandomAccessFile rFac = new RandomAccessFile(ROOT_FOLDER+"/invoices/factura_"+codFactura+".sml","rw"); for(InvoiceItem item : items){ if(getProduct(item.codigo) == null && getProduct(item.codigo).cantidad < 1) return false; @@ -262,6 +262,7 @@ public boolean createInvoice(String cliente, PaymentType tipo, InvoiceItem items rFac.writeLong(today.getTimeInMillis()); rFac.writeUTF(cliente); rFac.writeUTF(tipo.name()); + rFac.writeInt(items.length); for(InvoiceItem item : items){ rFac.writeInt(item.codigo); rFac.writeInt(item.cantidad);