README.md

# Invoice

### Example

```
promotions = Invoice.FileUtil.get_promotions()
inventory = Invoice.FileUtil.get_inventory()

Invoice.new_invoice()
|> Invoice.Scanner.add_product!("MUG", inventory)
|> Invoice.Scanner.add_product!("TSHIRT", inventory)
|> Invoice.Scanner.add_product!("VOUCHER", inventory)
|> Invoice.Scanner.remove_product!("VOUCHER")
|> Invoice.Bill.update_bill(promotions)
```

### Setup 
Add products to **data/products.json** in the format give below

```
[
  {
    "name": "Invoice Coffee Mug",
    "code": "MUG",
    "price": 7.5
  },
  {
    "name": "Invoice T-Shirt",
    "code": "TSHIRT",
    "promotion_id": 2,
    "price": 20
  },
  {
    "name": "Invoice Voucher",
    "code": "VOUCHER",
    "price": 5,
    "promotion_id": 1 
  }
]

```

Add promotions to **data/promotions.json** in the format give below

```
[
  {
    "id": 1,
    "discount": {
      "every": 2,
      "free": 1
    }
  },
  {
    "id": 2,
    "discount": {
      "minimum_quantity": 2,
      "rate_reduction": 0.95
    }
  }
]
```

### Tests

```
  mix test
```

### Installation

The [package](https://hex.pm/docs/publish) can be installed by adding `Invoice` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [{:invoice, "~> 0.0.1"}]
end
```

The docs can be found at [https://hexdocs.pm/invoice](https://hexdocs.pm/invoice).