Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
Y
Your Cashier
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ahmad Abi Mulya
Your Cashier
Commits
4f07bdd7
Commit
4f07bdd7
authored
Aug 27, 2020
by
Wahyu Wibowo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add fitur payment
parent
7490e8df
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
361 additions
and
282 deletions
+361
-282
CartActivity.java
.../com/example/yourcashiertest/activities/CartActivity.java
+18
-32
MainActivity.java
.../com/example/yourcashiertest/activities/MainActivity.java
+5
-8
PaymentActivity.java
...m/example/yourcashiertest/activities/PaymentActivity.java
+32
-2
StatusPayment.java
...com/example/yourcashiertest/activities/StatusPayment.java
+17
-1
CartDao.java
...c/main/java/com/example/yourcashiertest/daos/CartDao.java
+3
-0
CartRepository.java
.../example/yourcashiertest/repositories/CartRepository.java
+4
-0
Convert.java
.../main/java/com/example/yourcashiertest/utils/Convert.java
+19
-0
CartViewModel.java
...com/example/yourcashiertest/viewmodels/CartViewModel.java
+4
-0
activity_cart.xml
app/src/main/res/layout/activity_cart.xml
+0
-1
activity_payment.xml
app/src/main/res/layout/activity_payment.xml
+171
-159
activity_status_payment.xml
app/src/main/res/layout/activity_status_payment.xml
+88
-79
No files found.
app/src/main/java/com/example/yourcashiertest/activities/CartActivity.java
View file @
4f07bdd7
package
com
.
example
.
yourcashiertest
.
activities
;
import
androidx.annotation.RequiresApi
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.lifecycle.Observer
;
import
androidx.lifecycle.ViewModelProvider
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
android.content.Intent
;
import
android.os.Build
;
import
android.os.Bundle
;
import
com.example.yourcashiertest.R
;
import
com.example.yourcashiertest.adapters.CartAdapter
;
import
com.example.yourcashiertest.databinding.ActivityCartBinding
;
import
com.example.yourcashiertest.entities.Cart
;
import
com.example.yourcashiertest.utils.Convert
;
import
com.example.yourcashiertest.viewmodels.CartViewModel
;
import
java.text.DecimalFormat
;
import
java.text.DecimalFormatSymbols
;
import
java.util.List
;
public
class
CartActivity
extends
AppCompatActivity
{
ActivityCartBinding
binding
;
CartAdapter
adapter
;
private
static
int
SUM
=
0
;
public
static
String
PRICE
=
"price"
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
@@ -37,35 +34,32 @@ public class CartActivity extends AppCompatActivity {
CartViewModel
cartViewModel
=
new
ViewModelProvider
(
this
).
get
(
CartViewModel
.
class
);
cartViewModel
.
getCarts
().
observe
(
this
,
carts
->
adapter
.
setCartList
(
carts
));
cartViewModel
.
getCarts
().
observe
(
this
,
new
Observer
<
List
<
Cart
>>()
{
@Override
public
void
onChanged
(
List
<
Cart
>
carts
)
{
int
sum
=
0
;
cartViewModel
.
getCarts
().
observe
(
this
,
carts
->
{
int
count
=
0
;
if
(
carts
.
size
()
!=
0
){
for
(
int
i
=
0
;
i
<
carts
.
size
();
i
++){
sum
+=
carts
.
get
(
i
).
getPrice
();
count
+=
carts
.
get
(
i
).
getPrice
();
}
binding
.
tvTotalPrice
.
setText
(
String
.
valueOf
(
sum
));
}
SUM
=
count
;
binding
.
tvTotalPrice
.
setText
(
Convert
.
changeToCurrency
(
SUM
));
});
adapter
.
setCartListener
(
new
CartAdapter
.
CartListener
()
{
@RequiresApi
(
api
=
Build
.
VERSION_CODES
.
N
)
@Override
public
void
onIncrease
(
Cart
cart
)
{
cart
.
setQty
(
cart
.
getQty
()
+
1
);
cart
.
setPrice
(
Math
.
multiplyExact
(
cart
.
getRealPrice
(),
cart
.
getQty
()
));
cart
.
setPrice
(
cart
.
getRealPrice
()
*
cart
.
getQty
(
));
cartViewModel
.
updateCart
(
cart
);
}
@RequiresApi
(
api
=
Build
.
VERSION_CODES
.
N
)
@Override
public
void
onDecrease
(
Cart
cart
)
{
cart
.
setQty
(
cart
.
getQty
()
-
1
);
if
(
cart
.
getQty
()
==
0
){
cartViewModel
.
deleteCart
(
cart
);
}
else
{
cart
.
setPrice
(
Math
.
multiplyExact
(
cart
.
getRealPrice
(),
cart
.
getQty
()));
cart
.
setPrice
(
cart
.
getRealPrice
()
*
cart
.
getQty
());
cartViewModel
.
updateCart
(
cart
);
if
(
cart
.
getQty
()
<=
0
){
cartViewModel
.
deleteCart
(
cart
);
}
}
});
...
...
@@ -74,23 +68,15 @@ public class CartActivity extends AppCompatActivity {
binding
.
ivBtnBack
.
setOnClickListener
(
view
->
startActivity
(
new
Intent
(
CartActivity
.
this
,
MainActivity
.
class
)));
binding
.
btnCheckout
.
setOnClickListener
(
view
->
{
startActivity
(
new
Intent
(
CartActivity
.
this
,
PaymentActivity
.
class
));
startActivity
(
new
Intent
(
CartActivity
.
this
,
PaymentActivity
.
class
)
.
putExtra
(
PRICE
,
SUM
)
);
finish
();
});
}
private
String
changeToCurrency
(
int
totalPrice
){
DecimalFormat
decimalFormat
=
(
DecimalFormat
)
DecimalFormat
.
getCurrencyInstance
();
DecimalFormatSymbols
formatSymbols
=
new
DecimalFormatSymbols
();
formatSymbols
.
setCurrencySymbol
(
"Rp. "
);
formatSymbols
.
setMonetaryDecimalSeparator
(
','
);
formatSymbols
.
setGroupingSeparator
(
'.'
);
String
priceRupiah
=
decimalFormat
.
format
(
totalPrice
);
return
priceRupiah
;
@Override
protected
void
onDestroy
()
{
super
.
onDestroy
();
binding
=
null
;
}
}
\ No newline at end of file
app/src/main/java/com/example/yourcashiertest/activities/MainActivity.java
View file @
4f07bdd7
...
...
@@ -3,7 +3,6 @@ package com.example.yourcashiertest.activities;
import
androidx.annotation.NonNull
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.lifecycle.Observer
;
import
androidx.lifecycle.ViewModelProvider
;
import
android.Manifest
;
...
...
@@ -12,8 +11,6 @@ import android.content.Intent;
import
android.os.Bundle
;
import
android.text.Editable
;
import
android.text.TextWatcher
;
import
android.view.Menu
;
import
android.view.View
;
import
android.widget.PopupMenu
;
import
android.widget.Toast
;
...
...
@@ -22,12 +19,9 @@ import com.example.yourcashiertest.adapters.ProductAdapter;
import
com.example.yourcashiertest.databinding.ActivityMainBinding
;
import
com.example.yourcashiertest.entities.Cart
;
import
com.example.yourcashiertest.entities.Product
;
import
com.example.yourcashiertest.models.CartModel
;
import
com.example.yourcashiertest.viewmodels.CartViewModel
;
import
com.example.yourcashiertest.viewmodels.ProductViewModel
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
MainActivity
extends
AppCompatActivity
{
...
...
@@ -41,6 +35,7 @@ public class MainActivity extends AppCompatActivity {
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
};
public
static
boolean
visibility
=
false
;
ProductViewModel
viewModel
;
CartViewModel
cartViewModel
;
@Override
...
...
@@ -92,7 +87,7 @@ public class MainActivity extends AppCompatActivity {
});
binding
.
rvProducts
.
setAdapter
(
adapter
);
ProductViewModel
viewModel
=
new
ViewModelProvider
(
this
).
get
(
ProductViewModel
.
class
);
viewModel
=
new
ViewModelProvider
(
this
).
get
(
ProductViewModel
.
class
);
viewModel
.
getProducts
().
observe
(
this
,
adapter:
:
setProducts
);
adapter
.
setListener
(
new
ProductAdapter
.
ProductListener
()
{
...
...
@@ -134,6 +129,8 @@ public class MainActivity extends AppCompatActivity {
public
void
addToCart
(
Product
product
){
product
.
setQuantity
(
product
.
getQuantity
()
-
1
);
viewModel
.
updateProduct
(
product
);
Cart
cart
=
new
Cart
(
0
,
""
,
""
,
0
,
0
,
0
);
cart
.
setIdProduct
(
product
.
getId
());
cart
.
setImage
(
product
.
getPhoto
());
...
...
@@ -142,7 +139,7 @@ public class MainActivity extends AppCompatActivity {
cart
.
setQty
(
1
);
cart
.
setRealPrice
(
product
.
getPrice
());
cartViewModel
.
insertCart
(
cart
);
Toast
.
makeText
(
MainActivity
.
this
,
"
Data
berhasil ditambahkan ke keranjang"
,
Toast
.
LENGTH_LONG
).
show
();
Toast
.
makeText
(
MainActivity
.
this
,
"
Produk
berhasil ditambahkan ke keranjang"
,
Toast
.
LENGTH_LONG
).
show
();
}
...
...
app/src/main/java/com/example/yourcashiertest/activities/PaymentActivity.java
View file @
4f07bdd7
package
com
.
example
.
yourcashiertest
.
activities
;
import
androidx.annotation.RequiresApi
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.cardview.widget.CardView
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.lifecycle.ViewModelProvider
;
import
android.content.Intent
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.View
;
import
com.example.yourcashiertest.R
;
import
com.example.yourcashiertest.databinding.ActivityPaymentBinding
;
import
com.example.yourcashiertest.utils.Convert
;
import
com.example.yourcashiertest.viewmodels.CartViewModel
;
public
class
PaymentActivity
extends
AppCompatActivity
{
ActivityPaymentBinding
binding
;
public
static
String
REFUND
=
"refund"
;
public
int
refund
;
public
int
amount
;
CartViewModel
cartViewModel
;
@RequiresApi
(
api
=
Build
.
VERSION_CODES
.
N
)
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_payment
);
binding
=
DataBindingUtil
.
setContentView
(
this
,
R
.
layout
.
activity_payment
);
cartViewModel
=
new
ViewModelProvider
(
this
).
get
(
CartViewModel
.
class
);
amount
=
getIntent
().
getIntExtra
(
CartActivity
.
PRICE
,
0
);
binding
.
setAmount
(
Convert
.
changeToCurrency
(
amount
));
}
public
void
btnPay
(
View
view
)
{
startActivity
(
new
Intent
(
PaymentActivity
.
this
,
StatusPayment
.
class
));
int
amountPaid
=
Integer
.
parseInt
(
binding
.
etAmountPaid
.
getText
().
toString
());
refund
=
amountPaid
-
amount
;
startActivity
(
new
Intent
(
PaymentActivity
.
this
,
StatusPayment
.
class
).
putExtra
(
REFUND
,
refund
));
cartViewModel
.
clear
();
finish
();
}
@Override
protected
void
onDestroy
()
{
super
.
onDestroy
();
binding
=
null
;
}
}
\ No newline at end of file
app/src/main/java/com/example/yourcashiertest/activities/StatusPayment.java
View file @
4f07bdd7
package
com
.
example
.
yourcashiertest
.
activities
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.databinding.DataBindingUtil
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.View
;
import
com.example.yourcashiertest.R
;
import
com.example.yourcashiertest.databinding.ActivityStatusPaymentBinding
;
import
com.example.yourcashiertest.utils.Convert
;
public
class
StatusPayment
extends
AppCompatActivity
{
ActivityStatusPaymentBinding
binding
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_status_payment
);
binding
=
DataBindingUtil
.
setContentView
(
this
,
R
.
layout
.
activity_status_payment
);
int
refund
=
getIntent
().
getIntExtra
(
PaymentActivity
.
REFUND
,
0
);
Log
.
d
(
"Tag"
,
String
.
valueOf
(
refund
));
binding
.
setRefund
(
Convert
.
changeToCurrency
(
refund
));
}
public
void
btnFinish
(
View
view
)
{
startActivity
(
new
Intent
(
StatusPayment
.
this
,
MainActivity
.
class
));
finish
();
}
@Override
protected
void
onDestroy
()
{
super
.
onDestroy
();
binding
=
null
;
}
}
\ No newline at end of file
app/src/main/java/com/example/yourcashiertest/daos/CartDao.java
View file @
4f07bdd7
...
...
@@ -25,4 +25,7 @@ public interface CartDao {
@Delete
public
void
deleteCart
(
Cart
cart
);
@Query
(
"DELETE FROM Cart"
)
public
void
deletAll
();
}
app/src/main/java/com/example/yourcashiertest/repositories/CartRepository.java
View file @
4f07bdd7
...
...
@@ -32,6 +32,10 @@ public class CartRepository {
LocalDatabase
.
databaseWriteExecutor
.
execute
(()
->
cartDao
.
deleteCart
(
cart
));
}
public
void
clear
(){
LocalDatabase
.
databaseWriteExecutor
.
execute
(()
->
cartDao
.
deletAll
());
}
public
LiveData
<
List
<
Cart
>>
getAllCart
(){
return
this
.
carts
;
}
...
...
app/src/main/java/com/example/yourcashiertest/utils/Convert.java
0 → 100644
View file @
4f07bdd7
package
com
.
example
.
yourcashiertest
.
utils
;
import
java.text.DecimalFormat
;
import
java.text.DecimalFormatSymbols
;
public
class
Convert
{
public
static
String
changeToCurrency
(
long
totalPrice
){
DecimalFormat
decimalFormat
=
(
DecimalFormat
)
DecimalFormat
.
getCurrencyInstance
();
DecimalFormatSymbols
formatSymbols
=
new
DecimalFormatSymbols
();
formatSymbols
.
setCurrencySymbol
(
"Rp. "
);
formatSymbols
.
setMonetaryDecimalSeparator
(
','
);
formatSymbols
.
setGroupingSeparator
(
'.'
);
String
priceRupiah
=
decimalFormat
.
format
(
totalPrice
);
return
priceRupiah
;
}
}
app/src/main/java/com/example/yourcashiertest/viewmodels/CartViewModel.java
View file @
4f07bdd7
...
...
@@ -40,6 +40,10 @@ public class CartViewModel extends AndroidViewModel {
repository
.
delete
(
cart
);
}
public
void
clear
(){
repository
.
clear
();
}
public
MutableLiveData
<
Cart
>
getCart
(){
return
this
.
cart
;
}
...
...
app/src/main/res/layout/activity_cart.xml
View file @
4f07bdd7
...
...
@@ -79,7 +79,6 @@
android:layout_height=
"20dp"
android:gravity=
"top"
android:textColor=
"#fff"
android:text=
""
android:textAppearance=
"@style/some_id"
app:layout_constraintBottom_toBottomOf=
"@+id/amount"
app:layout_constraintEnd_toEndOf=
"@+id/amount"
...
...
app/src/main/res/layout/activity_payment.xml
View file @
4f07bdd7
<?xml version="1.0" encoding="utf-8"?>
<
androidx.constraintlayout.widget.ConstraintL
ayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<
l
ayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
>
<data>
<variable
name=
"amount"
type=
"String"
/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:padding=
"12dp"
...
...
@@ -28,13 +37,14 @@
android:layout_height=
"wrap_content"
android:elegantTextHeight=
"true"
android:gravity=
"center"
android:text=
"Rp. 500.000
"
android:text=
"@{amount}
"
android:textSize=
"24dp"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintHorizontal_bias=
"0.902"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tvPayment"
app:layout_constraintVertical_bias=
"0.0"
/>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/cvCash"
android:layout_width=
"match_parent"
...
...
@@ -79,6 +89,7 @@
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/cvCard"
android:layout_width=
"match_parent"
...
...
@@ -161,4 +172,5 @@
app:layout_constraintBottom_toBottomOf=
"parent"
tools:layout_editor_absoluteX=
"16dp"
tools:layout_editor_absoluteY=
"654dp"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
app/src/main/res/layout/activity_status_payment.xml
View file @
4f07bdd7
<?xml version="1.0" encoding="utf-8"?>
<
androidx.constraintlayout.widget.ConstraintL
ayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<
l
ayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
>
<data>
<variable
name=
"refund"
type=
"String"
/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:padding=
"10dp"
...
...
@@ -64,7 +72,7 @@
android:layout_height=
"wrap_content"
android:layout_marginTop=
"28dp"
android:gravity=
"center"
android:text=
"Rp. 44000
"
android:text=
"@{refund}
"
android:textSize=
"45dp"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintHorizontal_bias=
"0.0"
...
...
@@ -85,4 +93,5 @@
app:layout_constraintTop_toBottomOf=
"@+id/tvNominalRefund"
app:layout_constraintVertical_bias=
"1.0"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment