Преглед на файлове

fix: migration database

Muhammad Iqbal Afandi преди 3 години
родител
ревизия
c7a33c0588

+ 18
- 0
app/Models/Price.php Целия файл

@@ -0,0 +1,18 @@
1
+<?php
2
+
3
+namespace App\Models;
4
+
5
+use Illuminate\Database\Eloquent\Factories\HasFactory;
6
+use Illuminate\Database\Eloquent\Model;
7
+
8
+class Price extends Model
9
+{
10
+    use HasFactory;
11
+
12
+    protected $fillable = [
13
+        'price',
14
+        'product_id',
15
+        'customer_id',
16
+        'supplier_id'
17
+    ];
18
+}

+ 2
- 4
app/Models/Purchase.php Целия файл

@@ -10,11 +10,9 @@ class Purchase extends Model
10 10
     use HasFactory;
11 11
 
12 12
     protected $fillable = [
13
-        'price',
14
-        'ppn11',
13
+        'number',
14
+        'status',
15 15
         'qty',
16
-        'product_number',
17
-        'product_id',
18 16
         'supplier_id',
19 17
         'user_id'
20 18
     ];

+ 19
- 0
app/Models/PurchaseDetail.php Целия файл

@@ -0,0 +1,19 @@
1
+<?php
2
+
3
+namespace App\Models;
4
+
5
+use Illuminate\Database\Eloquent\Factories\HasFactory;
6
+use Illuminate\Database\Eloquent\Model;
7
+
8
+class PurchaseDetail extends Model
9
+{
10
+    use HasFactory;
11
+
12
+    protected $fillable = [
13
+        'price',
14
+        'ppn',
15
+        'qty',
16
+        'purchase_id',
17
+        'product_id'
18
+    ];
19
+}

+ 2
- 5
app/Models/Sale.php Целия файл

@@ -10,11 +10,8 @@ class Sale extends Model
10 10
     use HasFactory;
11 11
 
12 12
     protected $fillable = [
13
-        'price',
14
-        'ppn11',
15
-        'qty',
16
-        'invoice_number',
17
-        'product_id',
13
+        'number',
14
+        'status',
18 15
         'customers_id',
19 16
         'user_id'
20 17
     ];

+ 19
- 0
app/Models/SaleDetail.php Целия файл

@@ -0,0 +1,19 @@
1
+<?php
2
+
3
+namespace App\Models;
4
+
5
+use Illuminate\Database\Eloquent\Factories\HasFactory;
6
+use Illuminate\Database\Eloquent\Model;
7
+
8
+class SaleDetail extends Model
9
+{
10
+    use HasFactory;
11
+
12
+    protected $fillable = [
13
+        'price',
14
+        'ppn',
15
+        'qty',
16
+        'sale_id',
17
+        'product_id'
18
+    ];
19
+}

+ 2
- 2
app/Models/StockProduct.php Целия файл

@@ -10,8 +10,8 @@ class StockProduct extends Model
10 10
     use HasFactory;
11 11
 
12 12
     protected $fillable = [
13
-        'product_number',
14
-        'invoice_number',
13
+        'purchase_number',
14
+        'sale_number',
15 15
         'amount',
16 16
         'product_id'
17 17
     ];

+ 2
- 5
database/migrations/2022_06_16_091424_create_purchases_table.php Целия файл

@@ -15,11 +15,8 @@ return new class extends Migration
15 15
     {
16 16
         Schema::create('purchases', function (Blueprint $table) {
17 17
             $table->id();
18
-            $table->unsignedInteger('price');
19
-            $table->unsignedInteger('ppn11');
20
-            $table->unsignedInteger('qty');
21
-            $table->string('product_number')->unique();
22
-            $table->foreignId('product_id')->constrained();
18
+            $table->string('number');
19
+            $table->string('status');
23 20
             $table->foreignId('supplier_id')->constrained();
24 21
             $table->foreignId('user_id')->constrained();
25 22
             $table->timestamps();

+ 2
- 5
database/migrations/2022_06_16_091443_create_sales_table.php Целия файл

@@ -15,11 +15,8 @@ return new class extends Migration
15 15
     {
16 16
         Schema::create('sales', function (Blueprint $table) {
17 17
             $table->id();
18
-            $table->unsignedInteger('price');
19
-            $table->unsignedInteger('ppn11');
20
-            $table->unsignedInteger('qty');
21
-            $table->string('invoice_number')->unique();
22
-            $table->foreignId('product_id')->constrained();
18
+            $table->string('number');
19
+            $table->string('status');
23 20
             $table->foreignId('customers_id')->constrained();
24 21
             $table->foreignId('user_id')->constrained();
25 22
             $table->timestamps();

+ 3
- 3
database/migrations/2022_06_16_092657_create_stock_products_table.php Целия файл

@@ -15,9 +15,9 @@ return new class extends Migration
15 15
     {
16 16
         Schema::create('stock_products', function (Blueprint $table) {
17 17
             $table->id();
18
-            $table->string('product_number');
19
-            $table->string('invoice_number');
20
-            $table->string('amount');
18
+            $table->string('purchase_number');
19
+            $table->string('sale_number');
20
+            $table->integer('amount');
21 21
             $table->foreignId('product_id')->constrained();
22 22
             $table->timestamps();
23 23
         });

+ 35
- 0
database/migrations/2022_06_17_115146_create_prices_table.php Целия файл

@@ -0,0 +1,35 @@
1
+<?php
2
+
3
+use Illuminate\Database\Migrations\Migration;
4
+use Illuminate\Database\Schema\Blueprint;
5
+use Illuminate\Support\Facades\Schema;
6
+
7
+return new class extends Migration
8
+{
9
+    /**
10
+     * Run the migrations.
11
+     *
12
+     * @return void
13
+     */
14
+    public function up()
15
+    {
16
+        Schema::create('prices', function (Blueprint $table) {
17
+            $table->id();
18
+            $table->unsignedBigInteger('price');
19
+            $table->foreignId('product_id')->constrained();
20
+            $table->foreignId('customer_id')->constrained();
21
+            $table->foreignId('supplier_id')->constrained();
22
+            $table->timestamps();
23
+        });
24
+    }
25
+
26
+    /**
27
+     * Reverse the migrations.
28
+     *
29
+     * @return void
30
+     */
31
+    public function down()
32
+    {
33
+        Schema::dropIfExists('prices');
34
+    }
35
+};

+ 36
- 0
database/migrations/2022_06_17_115154_create_sale_details_table.php Целия файл

@@ -0,0 +1,36 @@
1
+<?php
2
+
3
+use Illuminate\Database\Migrations\Migration;
4
+use Illuminate\Database\Schema\Blueprint;
5
+use Illuminate\Support\Facades\Schema;
6
+
7
+return new class extends Migration
8
+{
9
+    /**
10
+     * Run the migrations.
11
+     *
12
+     * @return void
13
+     */
14
+    public function up()
15
+    {
16
+        Schema::create('sale_details', function (Blueprint $table) {
17
+            $table->id();
18
+            $table->unsignedInteger('price');
19
+            $table->unsignedInteger('ppn');
20
+            $table->unsignedInteger('qty');
21
+            $table->foreignId('sale_id')->constrained();
22
+            $table->foreignId('product_id')->constrained();
23
+            $table->timestamps();
24
+        });
25
+    }
26
+
27
+    /**
28
+     * Reverse the migrations.
29
+     *
30
+     * @return void
31
+     */
32
+    public function down()
33
+    {
34
+        Schema::dropIfExists('sale_details');
35
+    }
36
+};

+ 36
- 0
database/migrations/2022_06_17_115201_create_purchase_details_table.php Целия файл

@@ -0,0 +1,36 @@
1
+<?php
2
+
3
+use Illuminate\Database\Migrations\Migration;
4
+use Illuminate\Database\Schema\Blueprint;
5
+use Illuminate\Support\Facades\Schema;
6
+
7
+return new class extends Migration
8
+{
9
+    /**
10
+     * Run the migrations.
11
+     *
12
+     * @return void
13
+     */
14
+    public function up()
15
+    {
16
+        Schema::create('purchase_details', function (Blueprint $table) {
17
+            $table->id();
18
+            $table->unsignedInteger('price');
19
+            $table->unsignedInteger('ppn');
20
+            $table->unsignedInteger('qty');
21
+            $table->foreignId('purchase_id')->constrained();
22
+            $table->foreignId('product_id')->constrained();
23
+            $table->timestamps();
24
+        });
25
+    }
26
+
27
+    /**
28
+     * Reverse the migrations.
29
+     *
30
+     * @return void
31
+     */
32
+    public function down()
33
+    {
34
+        Schema::dropIfExists('purchase_details');
35
+    }
36
+};

+ 44
- 15
designs/diagrams/database.puml Целия файл

@@ -47,12 +47,9 @@ entity Supplier {
47 47
 entity Purchase {
48 48
   * id
49 49
   __ 
50
-  * price
51
-  * ppn11
52
-  * qty
53
-  * product_number
50
+  * number
51
+  * status
54 52
   __
55
-  * product_id
56 53
   * supplier_id
57 54
   * user_id
58 55
 }
@@ -60,12 +57,9 @@ entity Purchase {
60 57
 entity Sales {
61 58
   * id
62 59
   __
63
-    * price
64
-  * ppn11
65
-  * qty
66
-  * invoice_number
60
+  * number
61
+  * status
67 62
   __
68
-  * product_id
69 63
   * customer_id
70 64
   * user_id
71 65
 }
@@ -73,18 +67,53 @@ entity Sales {
73 67
 entity StockProduct {
74 68
   * id
75 69
   __
76
-  * product_number
77
-  * invoice_number
70
+  * purchase_number
71
+  * sale_number
78 72
   * amount
79 73
   __
80 74
   * product_id
81 75
 }
82 76
 
77
+entity Price {
78
+  * id
79
+  __
80
+  * price
81
+  __
82
+  * product_id
83
+  * customer_id
84
+  * supplier_id
85
+}
86
+
87
+entity SaleDetail {
88
+  * id
89
+  __
90
+  * price
91
+  * ppn
92
+  * qty
93
+  __
94
+  * sale_id
95
+  * product_id
96
+}
97
+
98
+entity PurchaseDetail {
99
+  * id
100
+  __
101
+  * price
102
+  * ppn
103
+  * qty
104
+  __
105
+  * purchase_id
106
+  * product_id
107
+}
108
+
83 109
 User ||--|{ Role
84
-Purchase ||--|{ Product
85 110
 Purchase ||--|{ Supplier
86 111
 Purchase ||--|{ User
87
-Sales ||--|{ Product
88 112
 Sales ||--|{ Customer
89 113
 Sales ||--|{ User
90
-StockProduct ||--|| Product
114
+StockProduct ||--|{ Product
115
+PurchaseDetail ||--|{ Purchase
116
+PurchaseDetail ||--|{ Product
117
+SaleDetail ||--|{ Sales
118
+SaleDetail ||--|{ Product
119
+Product ||--|| Price

BIN
designs/diagrams/database/Database.png Целия файл


+ 67
- 32
designs/diagrams/database/Database.svg Целия файл

@@ -1,20 +1,26 @@
1
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="513px" preserveAspectRatio="none" style="width:484px;height:513px;background:#FFFFFF;" version="1.1" viewBox="0 0 484 513" width="484px" zoomAndPan="magnify"><defs><filter height="300%" id="f1hkszgv5r3tlw" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[3fd616f346a44cd59a91eb10b19e157c]
2
-class User--><rect codeLine="2" fill="#FEFECE" filter="url(#f1hkszgv5r3tlw)" height="136.5425" id="User" style="stroke:#A80036;stroke-width:1.5;" width="76" x="129.5" y="229"/><ellipse cx="152.15" cy="245" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M148.2906,250.5 L148.2906,239.2969 L156.3219,239.2969 L156.3219,241.1875 L150.7438,241.1875 L150.7438,243.8906 L155.8219,243.8906 L155.8219,245.7813 L150.7438,245.7813 L150.7438,248.6094 L156.6656,248.6094 L156.6656,250.5 L148.2906,250.5 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="27" x="167.85" y="249.3564">User</text><line style="stroke:#A80036;stroke-width:1.5;" x1="130.5" x2="204.5" y1="261" y2="261"/><ellipse cx="140.5" cy="272" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="149.5" y="275.3179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="130.5" x2="204.5" y1="281.6489" y2="281.6489"/><ellipse cx="140.5" cy="292.6489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="26" x="149.5" y="295.9668">name</text><ellipse cx="140.5" cy="305.2979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="48" x="149.5" y="308.6157">username</text><ellipse cx="140.5" cy="317.9468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="30" x="149.5" y="321.2646">status</text><ellipse cx="140.5" cy="330.5957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="50" x="149.5" y="333.9136">password</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="6" x="149.5" y="346.5625">_</text><ellipse cx="140.5" cy="355.8936" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="32" x="149.5" y="359.2114">role_id</text><!--MD5=[a3638c1e5b65d287ecad7f06f5c0f212]
3
-class Role--><rect codeLine="13" fill="#FEFECE" filter="url(#f1hkszgv5r3tlw)" height="73.2979" id="Role" style="stroke:#A80036;stroke-width:1.5;" width="58" x="138.5" y="426"/><ellipse cx="153.5" cy="442" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M149.6406,447.5 L149.6406,436.2969 L157.6719,436.2969 L157.6719,438.1875 L152.0938,438.1875 L152.0938,440.8906 L157.1719,440.8906 L157.1719,442.7813 L152.0938,442.7813 L152.0938,445.6094 L158.0156,445.6094 L158.0156,447.5 L149.6406,447.5 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="26" x="167.5" y="446.3564">Role</text><line style="stroke:#A80036;stroke-width:1.5;" x1="139.5" x2="195.5" y1="458" y2="458"/><ellipse cx="149.5" cy="469" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="158.5" y="472.3179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="139.5" x2="195.5" y1="478.6489" y2="478.6489"/><ellipse cx="149.5" cy="489.6489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="26" x="158.5" y="492.9668">name</text><!--MD5=[2ce0c9fb7f55b1e256ab28a8ea6b25ec]
4
-class Customer--><rect codeLine="19" fill="#FEFECE" filter="url(#f1hkszgv5r3tlw)" height="111.2446" id="Customer" style="stroke:#A80036;stroke-width:1.5;" width="87" x="7" y="242"/><ellipse cx="22" cy="258" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M18.1406,263.5 L18.1406,252.2969 L26.1719,252.2969 L26.1719,254.1875 L20.5938,254.1875 L20.5938,256.8906 L25.6719,256.8906 L25.6719,258.7813 L20.5938,258.7813 L20.5938,261.6094 L26.5156,261.6094 L26.5156,263.5 L18.1406,263.5 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="55" x="36" y="262.3564">Customer</text><line style="stroke:#A80036;stroke-width:1.5;" x1="8" x2="93" y1="274" y2="274"/><ellipse cx="18" cy="285" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="27" y="288.3179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="8" x2="93" y1="294.6489" y2="294.6489"/><ellipse cx="18" cy="305.6489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="26" x="27" y="308.9668">name</text><ellipse cx="18" cy="318.2979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="40" x="27" y="321.6157">address</text><ellipse cx="18" cy="330.9468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="30" x="27" y="334.2646">phone</text><ellipse cx="18" cy="343.5957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="28" x="27" y="346.9136">npwp</text><!--MD5=[72136138052d025cffdce3c22fbd185f]
5
-class Product--><rect codeLine="28" fill="#FEFECE" filter="url(#f1hkszgv5r3tlw)" height="98.5957" id="Product" style="stroke:#A80036;stroke-width:1.5;" width="74" x="240.5" y="248"/><ellipse cx="255.5" cy="264" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M251.6406,269.5 L251.6406,258.2969 L259.6719,258.2969 L259.6719,260.1875 L254.0938,260.1875 L254.0938,262.8906 L259.1719,262.8906 L259.1719,264.7813 L254.0938,264.7813 L254.0938,267.6094 L260.0156,267.6094 L260.0156,269.5 L251.6406,269.5 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="42" x="269.5" y="268.3564">Product</text><line style="stroke:#A80036;stroke-width:1.5;" x1="241.5" x2="313.5" y1="280" y2="280"/><ellipse cx="251.5" cy="291" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="260.5" y="294.3179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="241.5" x2="313.5" y1="300.6489" y2="300.6489"/><ellipse cx="251.5" cy="311.6489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="36" x="260.5" y="314.9668">number</text><ellipse cx="251.5" cy="324.2979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="26" x="260.5" y="327.6157">name</text><ellipse cx="251.5" cy="336.9468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="17" x="260.5" y="340.2646">unit</text><!--MD5=[6f6af049516bc56aac6e320b3234ce97]
6
-class Supplier--><rect codeLine="36" fill="#FEFECE" filter="url(#f1hkszgv5r3tlw)" height="123.8936" id="Supplier" style="stroke:#A80036;stroke-width:1.5;" width="78" x="349.5" y="235.5"/><ellipse cx="364.5" cy="251.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M360.6406,257 L360.6406,245.7969 L368.6719,245.7969 L368.6719,247.6875 L363.0938,247.6875 L363.0938,250.3906 L368.1719,250.3906 L368.1719,252.2813 L363.0938,252.2813 L363.0938,255.1094 L369.0156,255.1094 L369.0156,257 L360.6406,257 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="46" x="378.5" y="255.8564">Supplier</text><line style="stroke:#A80036;stroke-width:1.5;" x1="350.5" x2="426.5" y1="267.5" y2="267.5"/><ellipse cx="360.5" cy="278.5" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="369.5" y="281.8179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="350.5" x2="426.5" y1="288.1489" y2="288.1489"/><ellipse cx="360.5" cy="299.1489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="26" x="369.5" y="302.4668">name</text><ellipse cx="360.5" cy="311.7979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="40" x="369.5" y="315.1157">address</text><ellipse cx="360.5" cy="324.4468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="30" x="369.5" y="327.7646">phone</text><ellipse cx="360.5" cy="337.0957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="24" x="369.5" y="340.4136">email</text><ellipse cx="360.5" cy="349.7446" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="28" x="369.5" y="353.0625">npwp</text><!--MD5=[ca228764f84c38a6bbd29bae3074bbc7]
7
-class Purchase--><rect codeLine="46" fill="#FEFECE" filter="url(#f1hkszgv5r3tlw)" height="161.8403" id="Purchase" style="stroke:#A80036;stroke-width:1.5;" width="105" x="225" y="7"/><ellipse cx="249" cy="23" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M245.1406,28.5 L245.1406,17.2969 L253.1719,17.2969 L253.1719,19.1875 L247.5938,19.1875 L247.5938,21.8906 L252.6719,21.8906 L252.6719,23.7813 L247.5938,23.7813 L247.5938,26.6094 L253.5156,26.6094 L253.5156,28.5 L245.1406,28.5 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="53" x="265" y="27.3564">Purchase</text><line style="stroke:#A80036;stroke-width:1.5;" x1="226" x2="329" y1="39" y2="39"/><ellipse cx="236" cy="50" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="245" y="53.3179">id</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="12" x="245" y="65.9668">__</text><ellipse cx="236" cy="75.2979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="24" x="245" y="78.6157">price</text><ellipse cx="236" cy="87.9468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="30" x="245" y="91.2646">ppn11</text><ellipse cx="236" cy="100.5957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="15" x="245" y="103.9136">qty</text><ellipse cx="236" cy="113.2446" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="79" x="245" y="116.5625">product_number</text><line style="stroke:#A80036;stroke-width:1.5;" x1="226" x2="329" y1="122.8936" y2="122.8936"/><ellipse cx="236" cy="133.8936" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="51" x="245" y="137.2114">product_id</text><ellipse cx="236" cy="146.5425" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="52" x="245" y="149.8604">supplier_id</text><ellipse cx="236" cy="159.1914" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="36" x="245" y="162.5093">user_id</text><!--MD5=[b6587b47cb08bf742060086bd1cd0b7e]
8
-class Sales--><rect codeLine="59" fill="#FEFECE" filter="url(#f1hkszgv5r3tlw)" height="157.1914" id="Sales" style="stroke:#A80036;stroke-width:1.5;" width="102" x="87.5" y="9.5"/><ellipse cx="119.6" cy="25.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M115.7406,31 L115.7406,19.7969 L123.7719,19.7969 L123.7719,21.6875 L118.1938,21.6875 L118.1938,24.3906 L123.2719,24.3906 L123.2719,26.2813 L118.1938,26.2813 L118.1938,29.1094 L124.1156,29.1094 L124.1156,31 L115.7406,31 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="32" x="137.4" y="29.8564">Sales</text><line style="stroke:#A80036;stroke-width:1.5;" x1="88.5" x2="188.5" y1="41.5" y2="41.5"/><ellipse cx="98.5" cy="52.5" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="107.5" y="55.8179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="88.5" x2="188.5" y1="62.1489" y2="62.1489"/><ellipse cx="98.5" cy="73.1489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="24" x="107.5" y="76.4668">price</text><ellipse cx="98.5" cy="85.7979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="30" x="107.5" y="89.1157">ppn11</text><ellipse cx="98.5" cy="98.4468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="15" x="107.5" y="101.7646">qty</text><ellipse cx="98.5" cy="111.0957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="76" x="107.5" y="114.4136">invoice_number</text><line style="stroke:#A80036;stroke-width:1.5;" x1="88.5" x2="188.5" y1="120.7446" y2="120.7446"/><ellipse cx="98.5" cy="131.7446" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="51" x="107.5" y="135.0625">product_id</text><ellipse cx="98.5" cy="144.3936" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="59" x="107.5" y="147.7114">customer_id</text><ellipse cx="98.5" cy="157.0425" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="36" x="107.5" y="160.3604">user_id</text><!--MD5=[0cfc926ac851c171b4800cdea9975fdf]
9
-class StockProduct--><rect codeLine="72" fill="#FEFECE" filter="url(#f1hkszgv5r3tlw)" height="119.2446" id="StockProduct" style="stroke:#A80036;stroke-width:1.5;" width="105" x="365" y="28.5"/><ellipse cx="380.45" cy="44.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M376.5906,50 L376.5906,38.7969 L384.6219,38.7969 L384.6219,40.6875 L379.0438,40.6875 L379.0438,43.3906 L384.1219,43.3906 L384.1219,45.2813 L379.0438,45.2813 L379.0438,48.1094 L384.9656,48.1094 L384.9656,50 L376.5906,50 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="72" x="394.55" y="48.8564">StockProduct</text><line style="stroke:#A80036;stroke-width:1.5;" x1="366" x2="469" y1="60.5" y2="60.5"/><ellipse cx="376" cy="71.5" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="385" y="74.8179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="366" x2="469" y1="81.1489" y2="81.1489"/><ellipse cx="376" cy="92.1489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="79" x="385" y="95.4668">product_number</text><ellipse cx="376" cy="104.7979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="76" x="385" y="108.1157">invoice_number</text><ellipse cx="376" cy="117.4468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="35" x="385" y="120.7646">amount</text><line style="stroke:#A80036;stroke-width:1.5;" x1="366" x2="469" y1="127.0957" y2="127.0957"/><ellipse cx="376" cy="138.0957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="51" x="385" y="141.4136">product_id</text><!--MD5=[70c37dc9bfbc8656942103c36f1181e4]
10
-link User to Role--><path codeLine="82" d="M167.5,374.42 C167.5,389.28 167.5,404.38 167.5,417.75 " fill="none" id="User-Role" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="167.5" x2="173.5" y1="417.83" y2="425.83"/><line style="stroke:#A80036;stroke-width:1.0;" x1="167.5" x2="161.5" y1="417.83" y2="425.83"/><line style="stroke:#A80036;stroke-width:1.0;" x1="167.5" x2="167.5" y1="417.83" y2="425.83"/><line style="stroke:#A80036;stroke-width:1.0;" x1="171.5" x2="163.5" y1="415.83" y2="415.83"/><line style="stroke:#A80036;stroke-width:1.0;" x1="163.5" x2="171.5" y1="370.21" y2="370.21"/><line style="stroke:#A80036;stroke-width:1.0;" x1="163.5" x2="171.5" y1="373.21" y2="373.21"/><line style="stroke:#A80036;stroke-width:1.0;" x1="167.5" x2="167.5" y1="374.21" y2="366.21"/><!--MD5=[f93227767273e9144af813cf724a60c6]
11
-link Purchase to Product--><path codeLine="83" d="M277.5,177.38 C277.5,198.56 277.5,220.61 277.5,239.89 " fill="none" id="Purchase-Product" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="277.5" x2="283.5" y1="239.98" y2="247.98"/><line style="stroke:#A80036;stroke-width:1.0;" x1="277.5" x2="271.5" y1="239.98" y2="247.98"/><line style="stroke:#A80036;stroke-width:1.0;" x1="277.5" x2="277.5" y1="239.98" y2="247.98"/><line style="stroke:#A80036;stroke-width:1.0;" x1="281.5" x2="273.5" y1="237.98" y2="237.98"/><line style="stroke:#A80036;stroke-width:1.0;" x1="273.5" x2="281.5" y1="173.22" y2="173.22"/><line style="stroke:#A80036;stroke-width:1.0;" x1="273.5" x2="281.5" y1="176.22" y2="176.22"/><line style="stroke:#A80036;stroke-width:1.0;" x1="277.5" x2="277.5" y1="177.22" y2="169.22"/><!--MD5=[47449b9f044e3634f406bd4441e700dd]
12
-link Purchase to Supplier--><path codeLine="84" d="M324.3,176.5 C333.51,193.71 343.05,211.53 351.86,228.01 " fill="none" id="Purchase-Supplier" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="352.0894" x2="361.1517" y1="228.4243" y2="232.652"/><line style="stroke:#A80036;stroke-width:1.0;" x1="352.0894" x2="350.5683" y1="228.4243" y2="238.308"/><line style="stroke:#A80036;stroke-width:1.0;" x1="352.0894" x2="355.86" y1="228.4243" y2="235.48"/><line style="stroke:#A80036;stroke-width:1.0;" x1="354.6745" x2="347.6189" y1="224.7751" y2="228.5457"/><line style="stroke:#A80036;stroke-width:1.0;" x1="318.7775" x2="325.8331" y1="174.6331" y2="170.8625"/><line style="stroke:#A80036;stroke-width:1.0;" x1="320.1915" x2="327.2471" y1="177.279" y2="173.5084"/><line style="stroke:#A80036;stroke-width:1.0;" x1="324.1906" x2="320.42" y1="176.2757" y2="169.22"/><!--MD5=[908832567ff15e3f47de674b99e285bc]
13
-link Purchase to User--><path codeLine="85" d="M231.02,176.67 C223.06,191.7 214.85,207.18 207.08,221.83 " fill="none" id="Purchase-User" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="207.0584" x2="208.6106" y1="221.8825" y2="231.7613"/><line style="stroke:#A80036;stroke-width:1.0;" x1="207.0584" x2="198.0094" y1="221.8825" y2="226.1387"/><line style="stroke:#A80036;stroke-width:1.0;" x1="207.0584" x2="203.31" y1="221.8825" y2="228.95"/><line style="stroke:#A80036;stroke-width:1.0;" x1="211.5292" x2="204.4617" y1="221.9898" y2="218.2414"/><line style="stroke:#A80036;stroke-width:1.0;" x1="229.5635" x2="236.6341" y1="170.8841" y2="174.6265"/><line style="stroke:#A80036;stroke-width:1.0;" x1="228.16" x2="235.2307" y1="173.5356" y2="177.278"/><line style="stroke:#A80036;stroke-width:1.0;" x1="231.2276" x2="234.97" y1="176.2907" y2="169.22"/><!--MD5=[a1800330d345d2f946249e9e4299eabc]
14
-link Sales to Product--><path codeLine="86" d="M194.25,172.23 C209.8,195.44 226.3,220.07 240.48,241.23 " fill="none" id="Sales-Product" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="240.5326" x2="249.9724" y1="241.3368" y2="244.637"/><line style="stroke:#A80036;stroke-width:1.0;" x1="240.5326" x2="240.0076" y1="241.3368" y2="251.323"/><line style="stroke:#A80036;stroke-width:1.0;" x1="240.5326" x2="244.99" y1="241.3368" y2="247.98"/><line style="stroke:#A80036;stroke-width:1.0;" x1="242.7399" x2="236.0967" y1="237.4473" y2="241.9047"/><line style="stroke:#A80036;stroke-width:1.0;" x1="188.5716" x2="195.2192" y1="170.9292" y2="166.4784"/><line style="stroke:#A80036;stroke-width:1.0;" x1="190.2406" x2="196.8882" y1="173.422" y2="168.9713"/><line style="stroke:#A80036;stroke-width:1.0;" x1="194.1208" x2="189.67" y1="172.0276" y2="165.38"/><!--MD5=[77820080b9be6acfb6e8a381a1a0e9b8]
15
-link Sales to Customer--><path codeLine="87" d="M102.46,173.97 C93.86,194.25 84.84,215.52 76.77,234.54 " fill="none" id="Sales-Customer" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.7334" x2="79.147" y1="234.6207" y2="244.325"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.7334" x2="68.093" y1="234.6207" y2="239.655"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.7334" x2="73.62" y1="234.6207" y2="241.99"/><line style="stroke:#A80036;stroke-width:1.0;" x1="81.1964" x2="73.8271" y1="234.3351" y2="231.2217"/><line style="stroke:#A80036;stroke-width:1.0;" x1="100.3637" x2="107.7257" y1="168.6757" y2="171.8063"/><line style="stroke:#A80036;stroke-width:1.0;" x1="99.1897" x2="106.5517" y1="171.4364" y2="174.5671"/><line style="stroke:#A80036;stroke-width:1.0;" x1="102.4794" x2="105.61" y1="173.922" y2="166.56"/><!--MD5=[b90679fcd0158477e65aabd182e1535f]
16
-link Sales to User--><path codeLine="88" d="M150.49,174.79 C152.62,190.02 154.82,205.79 156.91,220.72 " fill="none" id="Sales-User" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="156.9366" x2="163.9916" y1="220.9879" y2="228.075"/><line style="stroke:#A80036;stroke-width:1.0;" x1="156.9366" x2="152.1084" y1="220.9879" y2="229.745"/><line style="stroke:#A80036;stroke-width:1.0;" x1="156.9366" x2="158.05" y1="220.9879" y2="228.91"/><line style="stroke:#A80036;stroke-width:1.0;" x1="160.6193" x2="152.6972" y1="218.4506" y2="219.564"/><line style="stroke:#A80036;stroke-width:1.0;" x1="145.9276" x2="153.8517" y1="171.0717" y2="169.9724"/><line style="stroke:#A80036;stroke-width:1.0;" x1="146.3399" x2="154.264" y1="174.0433" y2="172.9439"/><line style="stroke:#A80036;stroke-width:1.0;" x1="150.4394" x2="149.34" y1="174.4841" y2="166.56"/><!--MD5=[469537f6e6fbfad22558102ade648a2e]
17
-link StockProduct to Product--><path codeLine="89" d="M373.89,153.64 C354.81,181.92 332.66,214.74 314.41,241.79 " fill="none" id="StockProduct-Product" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="315.8932" x2="309.262" y1="246.742" y2="242.2668"/><line style="stroke:#A80036;stroke-width:1.0;" x1="317.5714" x2="310.9402" y1="244.2553" y2="239.7801"/><line style="stroke:#A80036;stroke-width:1.0;" x1="314.8152" x2="310.34" y1="241.1888" y2="247.82"/><line style="stroke:#A80036;stroke-width:1.0;" x1="372.3868" x2="379.018" y1="148.708" y2="153.1832"/><line style="stroke:#A80036;stroke-width:1.0;" x1="370.7086" x2="377.3398" y1="151.1947" y2="155.6699"/><line style="stroke:#A80036;stroke-width:1.0;" x1="373.4648" x2="377.94" y1="154.2612" y2="147.63"/><!--MD5=[46ce65098b36372a8cf3e0bb439d5da2]
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="667px" preserveAspectRatio="none" style="width:510px;height:667px;background:#FFFFFF;" version="1.1" viewBox="0 0 510 667" width="510px" zoomAndPan="magnify"><defs><filter height="300%" id="f1tu0j3yucfoc7" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[3fd616f346a44cd59a91eb10b19e157c]
2
+class User--><rect codeLine="2" fill="#FEFECE" filter="url(#f1tu0j3yucfoc7)" height="136.5425" id="User" style="stroke:#A80036;stroke-width:1.5;" width="76" x="298" y="383"/><ellipse cx="320.65" cy="399" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M316.7906,404.5 L316.7906,393.2969 L324.8219,393.2969 L324.8219,395.1875 L319.2438,395.1875 L319.2438,397.8906 L324.3219,397.8906 L324.3219,399.7813 L319.2438,399.7813 L319.2438,402.6094 L325.1656,402.6094 L325.1656,404.5 L316.7906,404.5 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="27" x="336.35" y="403.3564">User</text><line style="stroke:#A80036;stroke-width:1.5;" x1="299" x2="373" y1="415" y2="415"/><ellipse cx="309" cy="426" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="318" y="429.3179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="299" x2="373" y1="435.6489" y2="435.6489"/><ellipse cx="309" cy="446.6489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="26" x="318" y="449.9668">name</text><ellipse cx="309" cy="459.2979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="48" x="318" y="462.6157">username</text><ellipse cx="309" cy="471.9468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="30" x="318" y="475.2646">status</text><ellipse cx="309" cy="484.5957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="50" x="318" y="487.9136">password</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="6" x="318" y="500.5625">_</text><ellipse cx="309" cy="509.8936" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="32" x="318" y="513.2114">role_id</text><!--MD5=[a3638c1e5b65d287ecad7f06f5c0f212]
3
+class Role--><rect codeLine="13" fill="#FEFECE" filter="url(#f1tu0j3yucfoc7)" height="73.2979" id="Role" style="stroke:#A80036;stroke-width:1.5;" width="58" x="307" y="580"/><ellipse cx="322" cy="596" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M318.1406,601.5 L318.1406,590.2969 L326.1719,590.2969 L326.1719,592.1875 L320.5938,592.1875 L320.5938,594.8906 L325.6719,594.8906 L325.6719,596.7813 L320.5938,596.7813 L320.5938,599.6094 L326.5156,599.6094 L326.5156,601.5 L318.1406,601.5 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="26" x="336" y="600.3564">Role</text><line style="stroke:#A80036;stroke-width:1.5;" x1="308" x2="364" y1="612" y2="612"/><ellipse cx="318" cy="623" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="327" y="626.3179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="308" x2="364" y1="632.6489" y2="632.6489"/><ellipse cx="318" cy="643.6489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="26" x="327" y="646.9668">name</text><!--MD5=[2ce0c9fb7f55b1e256ab28a8ea6b25ec]
4
+class Customer--><rect codeLine="19" fill="#FEFECE" filter="url(#f1tu0j3yucfoc7)" height="111.2446" id="Customer" style="stroke:#A80036;stroke-width:1.5;" width="87" x="409.5" y="396"/><ellipse cx="424.5" cy="412" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M420.6406,417.5 L420.6406,406.2969 L428.6719,406.2969 L428.6719,408.1875 L423.0938,408.1875 L423.0938,410.8906 L428.1719,410.8906 L428.1719,412.7813 L423.0938,412.7813 L423.0938,415.6094 L429.0156,415.6094 L429.0156,417.5 L420.6406,417.5 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="55" x="438.5" y="416.3564">Customer</text><line style="stroke:#A80036;stroke-width:1.5;" x1="410.5" x2="495.5" y1="428" y2="428"/><ellipse cx="420.5" cy="439" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="429.5" y="442.3179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="410.5" x2="495.5" y1="448.6489" y2="448.6489"/><ellipse cx="420.5" cy="459.6489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="26" x="429.5" y="462.9668">name</text><ellipse cx="420.5" cy="472.2979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="40" x="429.5" y="475.6157">address</text><ellipse cx="420.5" cy="484.9468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="30" x="429.5" y="488.2646">phone</text><ellipse cx="420.5" cy="497.5957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="28" x="429.5" y="500.9136">npwp</text><!--MD5=[72136138052d025cffdce3c22fbd185f]
5
+class Product--><rect codeLine="28" fill="#FEFECE" filter="url(#f1tu0j3yucfoc7)" height="98.5957" id="Product" style="stroke:#A80036;stroke-width:1.5;" width="74" x="71" y="211.5"/><ellipse cx="86" cy="227.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M82.1406,233 L82.1406,221.7969 L90.1719,221.7969 L90.1719,223.6875 L84.5938,223.6875 L84.5938,226.3906 L89.6719,226.3906 L89.6719,228.2813 L84.5938,228.2813 L84.5938,231.1094 L90.5156,231.1094 L90.5156,233 L82.1406,233 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="42" x="100" y="231.8564">Product</text><line style="stroke:#A80036;stroke-width:1.5;" x1="72" x2="144" y1="243.5" y2="243.5"/><ellipse cx="82" cy="254.5" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="91" y="257.8179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="72" x2="144" y1="264.1489" y2="264.1489"/><ellipse cx="82" cy="275.1489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="36" x="91" y="278.4668">number</text><ellipse cx="82" cy="287.7979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="26" x="91" y="291.1157">name</text><ellipse cx="82" cy="300.4468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="17" x="91" y="303.7646">unit</text><!--MD5=[6f6af049516bc56aac6e320b3234ce97]
6
+class Supplier--><rect codeLine="36" fill="#FEFECE" filter="url(#f1tu0j3yucfoc7)" height="123.8936" id="Supplier" style="stroke:#A80036;stroke-width:1.5;" width="78" x="185" y="389.5"/><ellipse cx="200" cy="405.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M196.1406,411 L196.1406,399.7969 L204.1719,399.7969 L204.1719,401.6875 L198.5938,401.6875 L198.5938,404.3906 L203.6719,404.3906 L203.6719,406.2813 L198.5938,406.2813 L198.5938,409.1094 L204.5156,409.1094 L204.5156,411 L196.1406,411 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="46" x="214" y="409.8564">Supplier</text><line style="stroke:#A80036;stroke-width:1.5;" x1="186" x2="262" y1="421.5" y2="421.5"/><ellipse cx="196" cy="432.5" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="205" y="435.8179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="186" x2="262" y1="442.1489" y2="442.1489"/><ellipse cx="196" cy="453.1489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="26" x="205" y="456.4668">name</text><ellipse cx="196" cy="465.7979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="40" x="205" y="469.1157">address</text><ellipse cx="196" cy="478.4468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="30" x="205" y="481.7646">phone</text><ellipse cx="196" cy="491.0957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="24" x="205" y="494.4136">email</text><ellipse cx="196" cy="503.7446" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="28" x="205" y="507.0625">npwp</text><!--MD5=[ca228764f84c38a6bbd29bae3074bbc7]
7
+class Purchase--><rect codeLine="46" fill="#FEFECE" filter="url(#f1tu0j3yucfoc7)" height="123.8936" id="Purchase" style="stroke:#A80036;stroke-width:1.5;" width="85" x="181.5" y="199"/><ellipse cx="196.5" cy="215" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M192.6406,220.5 L192.6406,209.2969 L200.6719,209.2969 L200.6719,211.1875 L195.0938,211.1875 L195.0938,213.8906 L200.1719,213.8906 L200.1719,215.7813 L195.0938,215.7813 L195.0938,218.6094 L201.0156,218.6094 L201.0156,220.5 L192.6406,220.5 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="53" x="210.5" y="219.3564">Purchase</text><line style="stroke:#A80036;stroke-width:1.5;" x1="182.5" x2="265.5" y1="231" y2="231"/><ellipse cx="192.5" cy="242" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="201.5" y="245.3179">id</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="12" x="201.5" y="257.9668">__</text><ellipse cx="192.5" cy="267.2979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="36" x="201.5" y="270.6157">number</text><ellipse cx="192.5" cy="279.9468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="30" x="201.5" y="283.2646">status</text><line style="stroke:#A80036;stroke-width:1.5;" x1="182.5" x2="265.5" y1="289.5957" y2="289.5957"/><ellipse cx="192.5" cy="300.5957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="52" x="201.5" y="303.9136">supplier_id</text><ellipse cx="192.5" cy="313.2446" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="36" x="201.5" y="316.5625">user_id</text><!--MD5=[b6587b47cb08bf742060086bd1cd0b7e]
8
+class Sales--><rect codeLine="56" fill="#FEFECE" filter="url(#f1tu0j3yucfoc7)" height="119.2446" id="Sales" style="stroke:#A80036;stroke-width:1.5;" width="85" x="310.5" y="201.5"/><ellipse cx="334.95" cy="217.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M331.0906,223 L331.0906,211.7969 L339.1219,211.7969 L339.1219,213.6875 L333.5438,213.6875 L333.5438,216.3906 L338.6219,216.3906 L338.6219,218.2813 L333.5438,218.2813 L333.5438,221.1094 L339.4656,221.1094 L339.4656,223 L331.0906,223 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="32" x="351.05" y="221.8564">Sales</text><line style="stroke:#A80036;stroke-width:1.5;" x1="311.5" x2="394.5" y1="233.5" y2="233.5"/><ellipse cx="321.5" cy="244.5" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="330.5" y="247.8179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="311.5" x2="394.5" y1="254.1489" y2="254.1489"/><ellipse cx="321.5" cy="265.1489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="36" x="330.5" y="268.4668">number</text><ellipse cx="321.5" cy="277.7979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="30" x="330.5" y="281.1157">status</text><line style="stroke:#A80036;stroke-width:1.5;" x1="311.5" x2="394.5" y1="287.4468" y2="287.4468"/><ellipse cx="321.5" cy="298.4468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="59" x="330.5" y="301.7646">customer_id</text><ellipse cx="321.5" cy="311.0957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="36" x="330.5" y="314.4136">user_id</text><!--MD5=[0cfc926ac851c171b4800cdea9975fdf]
9
+class StockProduct--><rect codeLine="66" fill="#FEFECE" filter="url(#f1tu0j3yucfoc7)" height="119.2446" id="StockProduct" style="stroke:#A80036;stroke-width:1.5;" width="114" x="7" y="13.5"/><ellipse cx="26.5" cy="29.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M22.6406,35 L22.6406,23.7969 L30.6719,23.7969 L30.6719,25.6875 L25.0938,25.6875 L25.0938,28.3906 L30.1719,28.3906 L30.1719,30.2813 L25.0938,30.2813 L25.0938,33.1094 L31.0156,33.1094 L31.0156,35 L22.6406,35 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="72" x="41.5" y="33.8564">StockProduct</text><line style="stroke:#A80036;stroke-width:1.5;" x1="8" x2="120" y1="45.5" y2="45.5"/><ellipse cx="18" cy="56.5" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="27" y="59.8179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="8" x2="120" y1="66.1489" y2="66.1489"/><ellipse cx="18" cy="77.1489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="88" x="27" y="80.4668">purchase_number</text><ellipse cx="18" cy="89.7979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="62" x="27" y="93.1157">sale_number</text><ellipse cx="18" cy="102.4468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="35" x="27" y="105.7646">amount</text><line style="stroke:#A80036;stroke-width:1.5;" x1="8" x2="120" y1="112.0957" y2="112.0957"/><ellipse cx="18" cy="123.0957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="51" x="27" y="126.4136">product_id</text><!--MD5=[a40a7ac4b423335b0d34bf16cf36e547]
10
+class Price--><rect codeLine="76" fill="#FEFECE" filter="url(#f1tu0j3yucfoc7)" height="119.2446" id="Price" style="stroke:#A80036;stroke-width:1.5;" width="85" x="64.5" y="392"/><ellipse cx="90.75" cy="408" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M86.8906,413.5 L86.8906,402.2969 L94.9219,402.2969 L94.9219,404.1875 L89.3438,404.1875 L89.3438,406.8906 L94.4219,406.8906 L94.4219,408.7813 L89.3438,408.7813 L89.3438,411.6094 L95.2656,411.6094 L95.2656,413.5 L86.8906,413.5 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="28" x="107.25" y="412.3564">Price</text><line style="stroke:#A80036;stroke-width:1.5;" x1="65.5" x2="148.5" y1="424" y2="424"/><ellipse cx="75.5" cy="435" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="84.5" y="438.3179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="65.5" x2="148.5" y1="444.6489" y2="444.6489"/><ellipse cx="75.5" cy="455.6489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="24" x="84.5" y="458.9668">price</text><line style="stroke:#A80036;stroke-width:1.5;" x1="65.5" x2="148.5" y1="465.2979" y2="465.2979"/><ellipse cx="75.5" cy="476.2979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="51" x="84.5" y="479.6157">product_id</text><ellipse cx="75.5" cy="488.9468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="59" x="84.5" y="492.2646">customer_id</text><ellipse cx="75.5" cy="501.5957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="52" x="84.5" y="504.9136">supplier_id</text><!--MD5=[680168ab3c03721c8f7b2302070ae319]
11
+class SaleDetail--><rect codeLine="86" fill="#FEFECE" filter="url(#f1tu0j3yucfoc7)" height="131.8936" id="SaleDetail" style="stroke:#A80036;stroke-width:1.5;" width="89" x="308.5" y="7"/><ellipse cx="323.5" cy="23" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M319.6406,28.5 L319.6406,17.2969 L327.6719,17.2969 L327.6719,19.1875 L322.0938,19.1875 L322.0938,21.8906 L327.1719,21.8906 L327.1719,23.7813 L322.0938,23.7813 L322.0938,26.6094 L328.0156,26.6094 L328.0156,28.5 L319.6406,28.5 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="57" x="337.5" y="27.3564">SaleDetail</text><line style="stroke:#A80036;stroke-width:1.5;" x1="309.5" x2="396.5" y1="39" y2="39"/><ellipse cx="319.5" cy="50" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="328.5" y="53.3179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="309.5" x2="396.5" y1="59.6489" y2="59.6489"/><ellipse cx="319.5" cy="70.6489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="24" x="328.5" y="73.9668">price</text><ellipse cx="319.5" cy="83.2979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="18" x="328.5" y="86.6157">ppn</text><ellipse cx="319.5" cy="95.9468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="15" x="328.5" y="99.2646">qty</text><line style="stroke:#A80036;stroke-width:1.5;" x1="309.5" x2="396.5" y1="105.5957" y2="105.5957"/><ellipse cx="319.5" cy="116.5957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="34" x="328.5" y="119.9136">sale_id</text><ellipse cx="319.5" cy="129.2446" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="51" x="328.5" y="132.5625">product_id</text><!--MD5=[3d9bec551640ffb4a026cc7c78c25b79]
12
+class PurchaseDetail--><rect codeLine="97" fill="#FEFECE" filter="url(#f1tu0j3yucfoc7)" height="131.8936" id="PurchaseDetail" style="stroke:#A80036;stroke-width:1.5;" width="117" x="156.5" y="7"/><ellipse cx="171.5" cy="23" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M167.6406,28.5 L167.6406,17.2969 L175.6719,17.2969 L175.6719,19.1875 L170.0938,19.1875 L170.0938,21.8906 L175.1719,21.8906 L175.1719,23.7813 L170.0938,23.7813 L170.0938,26.6094 L176.0156,26.6094 L176.0156,28.5 L167.6406,28.5 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="85" x="185.5" y="27.3564">PurchaseDetail</text><line style="stroke:#A80036;stroke-width:1.5;" x1="157.5" x2="272.5" y1="39" y2="39"/><ellipse cx="167.5" cy="50" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="8" x="176.5" y="53.3179">id</text><line style="stroke:#A80036;stroke-width:1.5;" x1="157.5" x2="272.5" y1="59.6489" y2="59.6489"/><ellipse cx="167.5" cy="70.6489" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="24" x="176.5" y="73.9668">price</text><ellipse cx="167.5" cy="83.2979" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="18" x="176.5" y="86.6157">ppn</text><ellipse cx="167.5" cy="95.9468" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="15" x="176.5" y="99.2646">qty</text><line style="stroke:#A80036;stroke-width:1.5;" x1="157.5" x2="272.5" y1="105.5957" y2="105.5957"/><ellipse cx="167.5" cy="116.5957" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="60" x="176.5" y="119.9136">purchase_id</text><ellipse cx="167.5" cy="129.2446" fill="#000000" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="51" x="176.5" y="132.5625">product_id</text><!--MD5=[70c37dc9bfbc8656942103c36f1181e4]
13
+link User to Role--><path codeLine="108" d="M336,528.42 C336,543.28 336,558.38 336,571.75 " fill="none" id="User-Role" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="336" x2="342" y1="571.83" y2="579.83"/><line style="stroke:#A80036;stroke-width:1.0;" x1="336" x2="330" y1="571.83" y2="579.83"/><line style="stroke:#A80036;stroke-width:1.0;" x1="336" x2="336" y1="571.83" y2="579.83"/><line style="stroke:#A80036;stroke-width:1.0;" x1="340" x2="332" y1="569.83" y2="569.83"/><line style="stroke:#A80036;stroke-width:1.0;" x1="332" x2="340" y1="524.21" y2="524.21"/><line style="stroke:#A80036;stroke-width:1.0;" x1="332" x2="340" y1="527.21" y2="527.21"/><line style="stroke:#A80036;stroke-width:1.0;" x1="336" x2="336" y1="528.21" y2="520.21"/><!--MD5=[47449b9f044e3634f406bd4441e700dd]
14
+link Purchase to Supplier--><path codeLine="109" d="M224,331.25 C224,347.45 224,364.7 224,380.91 " fill="none" id="Purchase-Supplier" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="224" x2="230" y1="381.28" y2="389.28"/><line style="stroke:#A80036;stroke-width:1.0;" x1="224" x2="218" y1="381.28" y2="389.28"/><line style="stroke:#A80036;stroke-width:1.0;" x1="224" x2="224" y1="381.28" y2="389.28"/><line style="stroke:#A80036;stroke-width:1.0;" x1="228" x2="220" y1="379.28" y2="379.28"/><line style="stroke:#A80036;stroke-width:1.0;" x1="220" x2="228" y1="327.2" y2="327.2"/><line style="stroke:#A80036;stroke-width:1.0;" x1="220" x2="228" y1="330.2" y2="330.2"/><line style="stroke:#A80036;stroke-width:1.0;" x1="224" x2="224" y1="331.2" y2="323.2"/><!--MD5=[908832567ff15e3f47de674b99e285bc]
15
+link Purchase to User--><path codeLine="110" d="M264.64,330.39 C274.05,346.24 284.09,363.14 293.58,379.1 " fill="none" id="Purchase-User" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="293.8014" x2="303.0472" y1="379.4937" y2="383.3035"/><line style="stroke:#A80036;stroke-width:1.0;" x1="293.8014" x2="292.7328" y1="379.4937" y2="389.4365"/><line style="stroke:#A80036;stroke-width:1.0;" x1="293.8014" x2="297.89" y1="379.4937" y2="386.37"/><line style="stroke:#A80036;stroke-width:1.0;" x1="296.2174" x2="289.3411" y1="375.7303" y2="379.8189"/><line style="stroke:#A80036;stroke-width:1.0;" x1="258.9612" x2="265.8412" y1="328.6812" y2="324.5988"/><line style="stroke:#A80036;stroke-width:1.0;" x1="260.492" x2="267.372" y1="331.2612" y2="327.1788"/><line style="stroke:#A80036;stroke-width:1.0;" x1="264.4423" x2="260.36" y1="330.08" y2="323.2"/><!--MD5=[77820080b9be6acfb6e8a381a1a0e9b8]
16
+link Sales to Customer--><path codeLine="111" d="M387.87,327.73 C398.37,347.53 409.85,369.17 420.21,388.69 " fill="none" id="Sales-Customer" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="420.2164" x2="429.2686" y1="388.7153" y2="392.9648"/><line style="stroke:#A80036;stroke-width:1.0;" x1="420.2164" x2="418.6714" y1="388.7153" y2="398.5952"/><line style="stroke:#A80036;stroke-width:1.0;" x1="420.2164" x2="423.97" y1="388.7153" y2="395.78"/><line style="stroke:#A80036;stroke-width:1.0;" x1="422.8104" x2="415.7456" y1="385.0723" y2="388.8259"/><line style="stroke:#A80036;stroke-width:1.0;" x1="382.4344" x2="389.4992" y1="326.0192" y2="322.2656"/><line style="stroke:#A80036;stroke-width:1.0;" x1="383.842" x2="390.9068" y1="328.6684" y2="324.9149"/><line style="stroke:#A80036;stroke-width:1.0;" x1="387.8436" x2="384.09" y1="327.6747" y2="320.61"/><!--MD5=[b90679fcd0158477e65aabd182e1535f]
17
+link Sales to User--><path codeLine="112" d="M346.95,329.04 C345.63,343.74 344.22,359.4 342.86,374.42 " fill="none" id="Sales-User" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="342.8494" x2="348.095" y1="374.7233" y2="383.2371"/><line style="stroke:#A80036;stroke-width:1.0;" x1="342.8494" x2="336.145" y1="374.7233" y2="382.1429"/><line style="stroke:#A80036;stroke-width:1.0;" x1="342.8494" x2="342.12" y1="374.7233" y2="382.69"/><line style="stroke:#A80036;stroke-width:1.0;" x1="347.0151" x2="339.0485" y1="373.0964" y2="372.3669"/><line style="stroke:#A80036;stroke-width:1.0;" x1="343.3684" x2="351.3364" y1="324.2364" y2="324.9516"/><line style="stroke:#A80036;stroke-width:1.0;" x1="343.1002" x2="351.0681" y1="327.2243" y2="327.9396"/><line style="stroke:#A80036;stroke-width:1.0;" x1="346.9947" x2="347.71" y1="328.578" y2="320.61"/><!--MD5=[469537f6e6fbfad22558102ade648a2e]
18
+link StockProduct to Product--><path codeLine="113" d="M79.71,140.43 C84.58,161.01 89.9,183.47 94.59,203.32 " fill="none" id="StockProduct-Product" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="94.6609" x2="102.3311" y1="203.5819" y2="209.9982"/><line style="stroke:#A80036;stroke-width:1.0;" x1="94.6609" x2="90.6489" y1="203.5819" y2="212.7418"/><line style="stroke:#A80036;stroke-width:1.0;" x1="94.6609" x2="96.49" y1="203.5819" y2="211.37"/><line style="stroke:#A80036;stroke-width:1.0;" x1="98.0976" x2="90.3095" y1="200.7203" y2="202.5495"/><line style="stroke:#A80036;stroke-width:1.0;" x1="74.8889" x2="82.6738" y1="137.4138" y2="135.5711"/><line style="stroke:#A80036;stroke-width:1.0;" x1="75.5799" x2="83.3648" y1="140.3331" y2="138.4905"/><line style="stroke:#A80036;stroke-width:1.0;" x1="79.7027" x2="77.86" y1="140.3849" y2="132.6"/><!--MD5=[875e56a13740a855aedfd46d8ab63ed6]
19
+link PurchaseDetail to Purchase--><path codeLine="114" d="M218.55,147.33 C219.24,161.55 219.96,176.43 220.64,190.53 " fill="none" id="PurchaseDetail-Purchase" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="220.6547" x2="227.033" y1="190.7393" y2="198.441"/><line style="stroke:#A80036;stroke-width:1.0;" x1="220.6547" x2="215.047" y1="190.7393" y2="199.019"/><line style="stroke:#A80036;stroke-width:1.0;" x1="220.6547" x2="221.04" y1="190.7393" y2="198.73"/><line style="stroke:#A80036;stroke-width:1.0;" x1="224.5538" x2="216.5631" y1="188.549" y2="188.9342"/><line style="stroke:#A80036;stroke-width:1.0;" x1="214.3476" x2="222.3383" y1="143.2383" y2="142.8524"/><line style="stroke:#A80036;stroke-width:1.0;" x1="214.4924" x2="222.4831" y1="146.2348" y2="145.8489"/><line style="stroke:#A80036;stroke-width:1.0;" x1="218.536" x2="218.15" y1="147.0407" y2="139.05"/><!--MD5=[636c4cbf2bb40ce634cacaf01a62e11c]
20
+link PurchaseDetail to Product--><path codeLine="115" d="M173.53,146.09 C162.42,165.4 150.58,185.98 140.07,204.25 " fill="none" id="PurchaseDetail-Product" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="139.9491" x2="141.1609" y1="204.4655" y2="214.3918"/><line style="stroke:#A80036;stroke-width:1.0;" x1="139.9491" x2="130.7591" y1="204.4655" y2="208.4082"/><line style="stroke:#A80036;stroke-width:1.0;" x1="139.9491" x2="135.96" y1="204.4655" y2="211.4"/><line style="stroke:#A80036;stroke-width:1.0;" x1="144.4136" x2="137.4792" y1="204.7265" y2="200.7373"/><line style="stroke:#A80036;stroke-width:1.0;" x1="172.1182" x2="179.0527" y1="140.5227" y2="144.5118"/><line style="stroke:#A80036;stroke-width:1.0;" x1="170.6223" x2="177.5568" y1="143.1231" y2="147.1122"/><line style="stroke:#A80036;stroke-width:1.0;" x1="173.5909" x2="177.58" y1="145.9845" y2="139.05"/><!--MD5=[4a0d2ccf57382988e84e92c9568ebf50]
21
+link SaleDetail to Sales--><path codeLine="116" d="M353,147.2 C353,162.32 353,178.16 353,193.04 " fill="none" id="SaleDetail-Sales" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="353" x2="359" y1="193.2" y2="201.2"/><line style="stroke:#A80036;stroke-width:1.0;" x1="353" x2="347" y1="193.2" y2="201.2"/><line style="stroke:#A80036;stroke-width:1.0;" x1="353" x2="353" y1="193.2" y2="201.2"/><line style="stroke:#A80036;stroke-width:1.0;" x1="357" x2="349" y1="191.2" y2="191.2"/><line style="stroke:#A80036;stroke-width:1.0;" x1="349" x2="357" y1="143.05" y2="143.05"/><line style="stroke:#A80036;stroke-width:1.0;" x1="349" x2="357" y1="146.05" y2="146.05"/><line style="stroke:#A80036;stroke-width:1.0;" x1="353" x2="353" y1="147.05" y2="139.05"/><!--MD5=[cc8c2cf61c441007fd82fc98c1838a15]
22
+link SaleDetail to Product--><path codeLine="117" d="M302.26,130.1 C298.58,133.25 294.81,136.25 291,139 C240.38,175.54 214.27,161.98 164,199 C159.64,202.21 155.36,205.79 151.22,209.57 " fill="none" id="SaleDetail-Product" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="151.065" x2="149.3885" y1="209.7153" y2="219.5737"/><line style="stroke:#A80036;stroke-width:1.0;" x1="151.065" x2="141.1315" y1="209.7153" y2="210.8663"/><line style="stroke:#A80036;stroke-width:1.0;" x1="151.065" x2="145.26" y1="209.7153" y2="215.22"/><line style="stroke:#A80036;stroke-width:1.0;" x1="155.2686" x2="149.7639" y1="211.2416" y2="205.4366"/><line style="stroke:#A80036;stroke-width:1.0;" x1="302.7427" x2="308.0612" y1="124.3212" y2="130.2973"/><line style="stroke:#A80036;stroke-width:1.0;" x1="300.5017" x2="305.8201" y1="126.3156" y2="132.2917"/><line style="stroke:#A80036;stroke-width:1.0;" x1="302.4139" x2="308.39" y1="129.9685" y2="124.65"/><!--MD5=[5fa2e163e1a5922a0d0ebcb119c05bb7]
23
+link Product to Price--><path codeLine="118" d="M107.7,317.65 C107.59,338.68 107.47,362.81 107.35,384.68 " fill="none" id="Product-Price" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="111.3263" x2="103.3264" y1="387.7164" y2="387.6837"/><line style="stroke:#A80036;stroke-width:1.0;" x1="111.3385" x2="103.3386" y1="384.7164" y2="384.6837"/><line style="stroke:#A80036;stroke-width:1.0;" x1="107.3427" x2="107.31" y1="383.7001" y2="391.7"/><line style="stroke:#A80036;stroke-width:1.0;" x1="103.7156" x2="111.7154" y1="314.5154" y2="314.5644"/><line style="stroke:#A80036;stroke-width:1.0;" x1="103.6972" x2="111.6971" y1="317.5154" y2="317.5644"/><line style="stroke:#A80036;stroke-width:1.0;" x1="107.691" x2="107.74" y1="318.5399" y2="310.54"/><!--MD5=[9707e9e0e0df594db690d98f6b7f4442]
18 24
 @startuml Database
19 25
 
20 26
 entity User {
@@ -64,12 +70,9 @@ entity Supplier {
64 70
 entity Purchase {
65 71
   * id
66 72
   __ 
67
-  * price
68
-  * ppn11
69
-  * qty
70
-  * product_number
73
+  * number
74
+  * status
71 75
   __
72
-  * product_id
73 76
   * supplier_id
74 77
   * user_id
75 78
 }
@@ -77,12 +80,9 @@ entity Purchase {
77 80
 entity Sales {
78 81
   * id
79 82
   __
80
-    * price
81
-  * ppn11
82
-  * qty
83
-  * invoice_number
83
+  * number
84
+  * status
84 85
   __
85
-  * product_id
86 86
   * customer_id
87 87
   * user_id
88 88
 }
@@ -90,21 +90,56 @@ entity Sales {
90 90
 entity StockProduct {
91 91
   * id
92 92
   __
93
-  * product_number
94
-  * invoice_number
93
+  * purchase_number
94
+  * sale_number
95 95
   * amount
96 96
   __
97 97
   * product_id
98 98
 }
99 99
 
100
+entity Price {
101
+  * id
102
+  __
103
+  * price
104
+  __
105
+  * product_id
106
+  * customer_id
107
+  * supplier_id
108
+}
109
+
110
+entity SaleDetail {
111
+  * id
112
+  __
113
+  * price
114
+  * ppn
115
+  * qty
116
+  __
117
+  * sale_id
118
+  * product_id
119
+}
120
+
121
+entity PurchaseDetail {
122
+  * id
123
+  __
124
+  * price
125
+  * ppn
126
+  * qty
127
+  __
128
+  * purchase_id
129
+  * product_id
130
+}
131
+
100 132
 User ||- -|{ Role
101
-Purchase ||- -|{ Product
102 133
 Purchase ||- -|{ Supplier
103 134
 Purchase ||- -|{ User
104
-Sales ||- -|{ Product
105 135
 Sales ||- -|{ Customer
106 136
 Sales ||- -|{ User
107
-StockProduct ||- -|| Product
137
+StockProduct ||- -|{ Product
138
+PurchaseDetail ||- -|{ Purchase
139
+PurchaseDetail ||- -|{ Product
140
+SaleDetail ||- -|{ Sales
141
+SaleDetail ||- -|{ Product
142
+Product ||- -|| Price
108 143
 @end
109 144
 
110 145
 PlantUML version 1.2022.0(Tue Jan 11 23:16:42 WIB 2022)