Skip to content

作業履歴 2017-04-08

概要

2017-04-08の作業内容をまとめています。

コミット: 1eeba72

メッセージ

時間給の従業員の給与
・testPaySingleCommissionedEmployeeSpanMultiplePayPeriods

変更されたファイル

  • M src/test/java/TestPayroll.java

変更内容

commit 1eeba729e860fb187b35341f83f10d195deb382e
Author: k2works <kakimomokuri@gmail.com>
Date:   Sat Apr 8 18:05:53 2017 +0900

    時間給の従業員の給与

    ・testPaySingleCommissionedEmployeeSpanMultiplePayPeriods

diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index b83e077..a7192f2 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -431,6 +431,30 @@ public class TestPayroll extends TestCase{
         ValidatePaycheck(pt, empId, payDate, 2500.0 + .032 * 13000 + .032 * 24000);
     }

+    public void testPaySingleCommissionedEmployeeSpanMultiplePayPeriods() {
+        System.err.println("testPaySingleCommissionedEmployeeSpanMultiplePayPeriods");
+        int empId = 3;
+        AddCommissionedEmployee t = new AddCommissionedEmployee(empId, "Lance", "Home", 2500, .032);
+        t.Execute();
+        Calendar earlyDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 9); // Previous
+        // pay
+        // period
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 23); // Biweekly
+        // Friday
+        Calendar lateDate = new GregorianCalendar(2001, Calendar.DECEMBER, 7); // Next
+        // pay
+        // period
+        SalesReceiptTransaction srt = new SalesReceiptTransaction(payDate, 13000, empId);
+        srt.Execute();
+        SalesReceiptTransaction srt2 = new SalesReceiptTransaction(earlyDate, 24000, empId);
+        srt2.Execute();
+        SalesReceiptTransaction srt3 = new SalesReceiptTransaction(lateDate, 15000, empId);
+        srt3.Execute();
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        ValidatePaycheck(pt, empId, payDate, 2500.0 + .032 * 13000);
+    }
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);

コミット: 8cc386c

メッセージ

時間給の従業員の給与
・TestPaySingleCommissionedEmployeeTwoSalesReceipts

変更されたファイル

  • M src/test/java/TestPayroll.java

変更内容

commit 8cc386c5f7573089107f01ff0b4662eb903c84f8
Author: k2works <kakimomokuri@gmail.com>
Date:   Sat Apr 8 17:39:06 2017 +0900

    時間給の従業員の給与

    ・TestPaySingleCommissionedEmployeeTwoSalesReceipts

diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index 9e87749..b83e077 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -416,6 +416,21 @@ public class TestPayroll extends TestCase{
         ValidatePaycheck(pt, empId, payDate, 2500.0 + .032 * 13000);
     }

+    public void testPaySingleCommissionedEmployeeTwoSalesReceipts() {
+        System.err.println("TestPaySingleCommissionedEmployeeTwoSalesReceipts");
+        int empId = 3;
+        AddCommissionedEmployee t = new AddCommissionedEmployee(empId, "Lance", "Home", 2500, .032);
+        t.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 9);
+        SalesReceiptTransaction srt = new SalesReceiptTransaction(payDate, 13000.0, empId);
+        srt.Execute();
+        SalesReceiptTransaction srt2 = new SalesReceiptTransaction(new GregorianCalendar(2001, Calendar.NOVEMBER, 8), 24000, empId);
+        srt2.Execute();
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        ValidatePaycheck(pt, empId, payDate, 2500.0 + .032 * 13000 + .032 * 24000);
+    }
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);

コミット: fbc7c25

メッセージ

時間給の従業員の給与
・TestPaySingleCommissionedEmployeeOneSalesReceipt

変更されたファイル

  • M src/test/java/TestPayroll.java

変更内容

commit fbc7c25c3c816644caf18490352aff217f6ba43b
Author: k2works <kakimomokuri@gmail.com>
Date:   Sat Apr 8 17:32:46 2017 +0900

    時間給の従業員の給与

    ・TestPaySingleCommissionedEmployeeOneSalesReceipt

diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index 3d39be9..9e87749 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -403,6 +403,19 @@ public class TestPayroll extends TestCase{
         ValidatePaycheck(pt, empId, payDate, 2500.00);
     }

+    public void testPaySingleCommissionedEmployeeOneSalesReceipt() {
+        System.err.println("TestPaySingleCommissionedEmployeeOneSalesReceipt");
+        int empId = 3;
+        AddCommissionedEmployee t = new AddCommissionedEmployee(empId, "Lance", "Home", 2500, .032);
+        t.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 9);
+        SalesReceiptTransaction srt = new SalesReceiptTransaction(payDate, 13000.0, empId);
+        srt.Execute();
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        ValidatePaycheck(pt, empId, payDate, 2500.0 + .032 * 13000);
+    }
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);

コミット: 05926e0

メッセージ

時間給の従業員の給与
・TestPaySingleCommissionedEmployeeNoSalesReceipts

変更されたファイル

  • M src/main/java/BiweeklySchedule.java
  • M src/main/java/CommissionedClassification.java
  • M src/main/java/SalesReceipt.java
  • M src/main/java/SalesReceiptTransaction.java
  • M src/test/java/TestPayroll.java

変更内容

commit 05926e06a06090808823863e0bdbdf276bc4a18e
Author: k2works <kakimomokuri@gmail.com>
Date:   Sat Apr 8 17:27:24 2017 +0900

    時間給の従業員の給与

    ・TestPaySingleCommissionedEmployeeNoSalesReceipts

diff --git a/src/main/java/BiweeklySchedule.java b/src/main/java/BiweeklySchedule.java
index eaaa644..cbcab18 100644
--- a/src/main/java/BiweeklySchedule.java
+++ b/src/main/java/BiweeklySchedule.java
@@ -1,14 +1,30 @@
 import java.util.Calendar;
+import java.util.GregorianCalendar;

 /**
  * Created by k2works on 2017/04/06.
  */
 public class BiweeklySchedule implements PaymentSchedule {
+    private final Calendar FIRST_PAYBALE_FRIDAY = new GregorianCalendar(2001, Calendar.NOVEMBER, 9);
+
     public boolean IsPayDate(Calendar payDate) {
+        Calendar cal = Calendar.getInstance();
+        if ((payDate.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY)) {
+            cal.setTime(FIRST_PAYBALE_FRIDAY.getTime());
+            while (cal.compareTo(payDate) <= 0) {
+                if (cal.equals(payDate)) {
+                    return true;
+                }
+                cal.add(Calendar.DATE, 14);
+            }
+        }
         return false;
     }

     public Calendar GetPayPeriodStartDate(Calendar payDate) {
-        return null;
+        Calendar payPeriodStartDate = Calendar.getInstance();
+        payPeriodStartDate.setTime(payDate.getTime());
+        payPeriodStartDate.add(Calendar.DATE, -13);
+        return payPeriodStartDate;
     }
-}
+}
\ No newline at end of file
diff --git a/src/main/java/CommissionedClassification.java b/src/main/java/CommissionedClassification.java
index 081c1a3..774abd6 100644
--- a/src/main/java/CommissionedClassification.java
+++ b/src/main/java/CommissionedClassification.java
@@ -1,3 +1,4 @@
+import java.util.Calendar;
 import java.util.HashMap;
 import java.util.Map;

@@ -7,12 +8,12 @@ import java.util.Map;
 public class CommissionedClassification implements PaymentClassification {
     private double itsSalary;
     private double itsCommissionRate;
-    private Map<Long, SalesReceipt> itsReceipts;
+    private Map<Calendar, SalesReceipt> itsReceipts;

     public CommissionedClassification(double salary, double commissionRate) {
         itsSalary = salary;
         itsCommissionRate = commissionRate;
-        itsReceipts = new HashMap<Long, SalesReceipt>();
+        itsReceipts = new HashMap<Calendar, SalesReceipt>();
     }

     public double GetSalary() {
@@ -27,11 +28,17 @@ public class CommissionedClassification implements PaymentClassification {
         itsReceipts.put(sr.GetSaleDate(),sr);
     }

-    public SalesReceipt GetReceipt(long date) {
+    public SalesReceipt GetReceipt(Calendar date) {
         return itsReceipts.get(date);
     }

     public double CalculatePay(Paycheck pc) {
-        return 0;
+        double commission = 0.0;
+        for (SalesReceipt receipt : itsReceipts.values()) {
+            if (Date.IsBetween(receipt.GetSaleDate(), pc.GetPayPeriodStartDate(),pc.GetPayPeriodEndDate())) {
+                commission += receipt.GetAmount() * itsCommissionRate;
+            }
+        }
+        return itsSalary + commission;
     }
 }
diff --git a/src/main/java/SalesReceipt.java b/src/main/java/SalesReceipt.java
index 84bb661..b62a8f3 100644
--- a/src/main/java/SalesReceipt.java
+++ b/src/main/java/SalesReceipt.java
@@ -1,16 +1,18 @@
+import java.util.Calendar;
+
 /**
  * Created by k2works on 2017/04/06.
  */
 public class SalesReceipt {
-    private long itsSaleDate;
+    private Calendar itsSaleDate;
     private double itsAmount;

-    public SalesReceipt(long saleDate, double amount) {
+    public SalesReceipt(Calendar saleDate, double amount) {
         itsSaleDate = saleDate;
         itsAmount = amount;
     }

-    public long GetSaleDate() {
+    public Calendar GetSaleDate() {
         return itsSaleDate;
     }

diff --git a/src/main/java/SalesReceiptTransaction.java b/src/main/java/SalesReceiptTransaction.java
index f69596f..d747197 100644
--- a/src/main/java/SalesReceiptTransaction.java
+++ b/src/main/java/SalesReceiptTransaction.java
@@ -1,12 +1,14 @@
+import java.util.Calendar;
+
 /**
  * Created by k2works on 2017/04/06.
  */
 public class SalesReceiptTransaction implements Transaction {
-    private long itsSaleDate;
+    private Calendar itsSaleDate;
     private double itsAmount;
     private int itsEmpId;

-    public SalesReceiptTransaction(long saleDate, double amount, int empId) {
+    public SalesReceiptTransaction(Calendar saleDate, double amount, int empId) {
         itsSaleDate = saleDate;
         itsAmount = amount;
         itsEmpId = empId;
diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index ee33092..3d39be9 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -104,14 +104,15 @@ public class TestPayroll extends TestCase{
         int empId = 3;
         AddCommissionedEmployee t = new AddCommissionedEmployee(empId, "Lance", "Home", 2500, 3.2);
         t.Execute();
-        SalesReceiptTransaction srt = new SalesReceiptTransaction(20011112, 25000, empId);
+        Calendar date = new GregorianCalendar(2001, Calendar.NOVEMBER, 12);
+        SalesReceiptTransaction srt = new SalesReceiptTransaction(date, 25000, empId);
         srt.Execute();
         Employee e = PayrollDatabase.GetEmployee(empId);
         assertNotNull(e);
         PaymentClassification pc = e.GetClassification();
         CommissionedClassification cc = (CommissionedClassification) pc;
         assertNotNull(cc);
-        SalesReceipt receipt = cc.GetReceipt(20011112);
+        SalesReceipt receipt = cc.GetReceipt(date);
         assertNotNull(receipt);
         assertEquals(25000.0, receipt.GetAmount());
     }
@@ -391,6 +392,16 @@ public class TestPayroll extends TestCase{
         ValidatePaycheck(pt, empId, payDate, 2 * 15.25);
     }

+    public void testPaySingleCommissionedEmployeeNoSalesReceipts() {
+        System.err.println("TestPaySingleCommissionedEmployeeNoSalesReceipts");
+        int empId = 3;
+        AddCommissionedEmployee t = new AddCommissionedEmployee(empId, "Lance", "Home", 2500, 3.2);
+        t.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 9);
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        ValidatePaycheck(pt, empId, payDate, 2500.00);
+    }

     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);

コミット: c765f96

メッセージ

時間給の従業員の給与
・TestPaySingleHourlyEmployeeWithTimeCardsSpanningTwoPayPeriods

変更されたファイル

  • M src/test/java/TestPayroll.java

変更内容

commit c765f96a5ee79ada518344b948b0e0e749955e1b
Author: k2works <kakimomokuri@gmail.com>
Date:   Sat Apr 8 16:31:47 2017 +0900

    時間給の従業員の給与

    ・TestPaySingleHourlyEmployeeWithTimeCardsSpanningTwoPayPeriods

diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index 83842da..ee33092 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -375,6 +375,22 @@ public class TestPayroll extends TestCase{
         ValidatePaycheck(pt, empId,payDate,7 * 15.25);
     }

+    public void testPaySingleHourlyEmployeeWithTimeCardsSpanningTwoPayPeriods() {
+        System.err.println("TestPaySingleHourlyEmployeeWithTimeCardsSpanningTwoPayPeriods");
+        int empId = 2;
+        AddHourlyEmployee t = new AddHourlyEmployee(empId, "Bill","Home",15.25);
+        t.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 9);
+        Calendar dateInPreviousPayPeriod = new GregorianCalendar(2001, Calendar.NOVEMBER, 2);
+        TimeCardTransaction tc = new TimeCardTransaction(payDate, 2.0 ,empId);
+        tc.Execute();
+        TimeCardTransaction tc2 = new TimeCardTransaction(dateInPreviousPayPeriod,5.0, empId);
+        tc2.Execute();
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        ValidatePaycheck(pt, empId, payDate, 2 * 15.25);
+    }
+

     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);

コミット: 6f1f55b

メッセージ

時間給の従業員の給与
・TestPaySingleHourlyEmployeeTwoTimeCards

変更されたファイル

  • M src/test/java/TestPayroll.java

変更内容

commit 6f1f55b10f363b646b7ce100bf1a5d56f1978ae2
Author: k2works <kakimomokuri@gmail.com>
Date:   Sat Apr 8 16:21:09 2017 +0900

    時間給の従業員の給与

    ・TestPaySingleHourlyEmployeeTwoTimeCards

diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index daa4dd8..83842da 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -360,6 +360,22 @@ public class TestPayroll extends TestCase{
         assertNull(pc);
     }

+    public void testPaySingleHourlyEmployeeTwoTimeCards() {
+        System.err.println("TestPaySingleHourlyEmployeeTwoTimeCards");
+        int empId = 2;
+        AddHourlyEmployee t = new AddHourlyEmployee(empId, "Bill", "Home", 15.25);
+        t.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 9);
+        TimeCardTransaction tc = new TimeCardTransaction(payDate, 2.0, empId);
+        tc.Execute();
+        TimeCardTransaction tc2 = new TimeCardTransaction(new GregorianCalendar(2001, Calendar.NOVEMBER,8), 5.0, empId);
+        tc2.Execute();
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        ValidatePaycheck(pt, empId,payDate,7 * 15.25);
+    }
+
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);

コミット: b19e7a7

メッセージ

時間給の従業員の給与
・TestPaySingleHourlyEmployeeOnWrongDate

変更されたファイル

  • M src/test/java/TestPayroll.java

変更内容

commit b19e7a75d701e826ac8fa3bd4489382899780ff2
Author: k2works <kakimomokuri@gmail.com>
Date:   Sat Apr 8 15:49:02 2017 +0900

    時間給の従業員の給与

    ・TestPaySingleHourlyEmployeeOnWrongDate

diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index b32d176..daa4dd8 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -346,6 +346,20 @@ public class TestPayroll extends TestCase{
         ValidatePaycheck(pt,empId,payDate,(8 + 1.5) * 15.25);
     }

+    public void testPaySingleHourlyEmployeeOnWrongDate() {
+        System.err.println("TestPaySingleHourlyEmployeeOnWrongDate");
+        int empId = 2;
+        AddHourlyEmployee t = new AddHourlyEmployee(empId, "Bill", "Home",15.25);
+        t.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 8);
+        TimeCardTransaction tc = new TimeCardTransaction(payDate, 9.0, empId);
+        tc.Execute();
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        Paycheck pc = pt.GetPaycheck(empId);
+        assertNull(pc);
+    }
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);

コミット: 8fff22a

メッセージ

時間給の従業員の給与
・TestPaySingleHourlyEmployeeOvertimeOneTimeCard

変更されたファイル

  • M src/test/java/TestPayroll.java

変更内容

commit 8fff22a60bae4f4881bf9629e571b1937c518f26
Author: k2works <kakimomokuri@gmail.com>
Date:   Sat Apr 8 15:39:20 2017 +0900

    時間給の従業員の給与

    ・TestPaySingleHourlyEmployeeOvertimeOneTimeCard

diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index 651d354..b32d176 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -333,6 +333,19 @@ public class TestPayroll extends TestCase{
         ValidatePaycheck(pt,empId,payDate,30.5);
     }

+    public void testPaySingleHourlyEmployeeOvertimeOneTimeCard() {
+        System.err.println("TestPaySingleHourlyEmployeeOvertimeOneTimeCard");
+        int empId = 2;
+        AddHourlyEmployee t = new AddHourlyEmployee(empId,"Bill","Home",15.25);
+        t.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 9);
+        TimeCardTransaction tc = new TimeCardTransaction(payDate,9.0, empId);
+        tc.Execute();
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        ValidatePaycheck(pt,empId,payDate,(8 + 1.5) * 15.25);
+    }
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);

コミット: f7b50bf

メッセージ

時間給の従業員の給与
・TestPaySingleHourlyEmployeeOneTimeCard

変更されたファイル

  • A src/main/java/Date.java
  • M src/main/java/HourlyClassification.java
  • M src/main/java/Paycheck.java
  • M src/main/java/TimeCard.java
  • M src/main/java/TimeCardTransaction.java
  • M src/test/java/TestPayroll.java

変更内容

commit f7b50bffed658f082505af8f8ddb4bd8a6b76a1c
Author: k2works <kakimomokuri@gmail.com>
Date:   Sat Apr 8 15:22:03 2017 +0900

    時間給の従業員の給与

    ・TestPaySingleHourlyEmployeeOneTimeCard

diff --git a/src/main/java/Date.java b/src/main/java/Date.java
new file mode 100644
index 0000000..51f2774
--- /dev/null
+++ b/src/main/java/Date.java
@@ -0,0 +1,16 @@
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+/**
+ * Created by k2works on 2017/04/08.
+ */
+public class Date extends GregorianCalendar {
+    private static final long serialVersionUID = 2317114430827648749L;
+
+    public static boolean IsBetween(Calendar theDate, Calendar startDate, Calendar endDate) {
+        if (0 <= theDate.compareTo(startDate) && theDate.compareTo(endDate) <= 0) {
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/src/main/java/HourlyClassification.java b/src/main/java/HourlyClassification.java
index a2e0678..3df6f8d 100644
--- a/src/main/java/HourlyClassification.java
+++ b/src/main/java/HourlyClassification.java
@@ -1,3 +1,4 @@
+import java.util.Calendar;
 import java.util.HashMap;
 import java.util.Map;

@@ -5,11 +6,11 @@ import java.util.Map;
  * Created by k2works on 2017/04/06.
  */
 public class HourlyClassification implements  PaymentClassification {
-    private Map<Long, TimeCard> itsTimeCards;
+    private Map<Calendar, TimeCard> itsTimeCards;
     private double itsHourlyRate;

     public HourlyClassification(double hourlyRate) {
-        itsTimeCards = new HashMap<Long, TimeCard>();
+        itsTimeCards = new HashMap<Calendar, TimeCard>();
         itsHourlyRate = hourlyRate;
     }

@@ -17,7 +18,7 @@ public class HourlyClassification implements  PaymentClassification {
         return itsHourlyRate;
     }

-    public TimeCard GetTimeCard(long date) {
+    public TimeCard GetTimeCard(Calendar date) {
         return itsTimeCards.get(date);
     }

@@ -26,6 +27,16 @@ public class HourlyClassification implements  PaymentClassification {
     }

     public double CalculatePay(Paycheck pc) {
-        return 0;
+        double totalPay = 0;
+        for (TimeCard tc : itsTimeCards.values()) {
+            if (Date.IsBetween(tc.GetDate(), pc.GetPayPeriodStartDate(),pc.GetPayPeriodEndDate())) {
+                if(8 < tc.GetHours()) {
+                    totalPay += itsHourlyRate * 8 + itsHourlyRate * (tc.GetHours() - 8) * 1.5;
+                } else {
+                    totalPay += itsHourlyRate * tc.GetHours();
+                }
+            }
+        }
+        return totalPay;
     }
 }
diff --git a/src/main/java/Paycheck.java b/src/main/java/Paycheck.java
index c59838d..4681770 100644
--- a/src/main/java/Paycheck.java
+++ b/src/main/java/Paycheck.java
@@ -27,6 +27,10 @@ public class Paycheck {
         itsNetPay = netPay;
     }

+    public Calendar GetPayPeriodStartDate() {
+        return itsPayPeriodStartDate;
+    }
+
     public Calendar GetPayPeriodEndDate() {
         return itsPayPeriodEndDate;
     }
diff --git a/src/main/java/TimeCard.java b/src/main/java/TimeCard.java
index b95b0ed..3ed238c 100644
--- a/src/main/java/TimeCard.java
+++ b/src/main/java/TimeCard.java
@@ -1,16 +1,18 @@
+import java.util.Calendar;
+
 /**
  * Created by k2works on 2017/04/06.
  */
 public class TimeCard {
-    private long itsDate;
+    private Calendar itsDate;
     private double itsHours;

-    public TimeCard(long date, double hours) {
+    public TimeCard(Calendar date, double hours) {
         itsDate = date;
         itsHours = hours;
     }

-    public long GetDate() {
+    public Calendar GetDate() {
         return itsDate;
     }

diff --git a/src/main/java/TimeCardTransaction.java b/src/main/java/TimeCardTransaction.java
index 268d20d..81e5568 100644
--- a/src/main/java/TimeCardTransaction.java
+++ b/src/main/java/TimeCardTransaction.java
@@ -1,12 +1,14 @@
+import java.util.Calendar;
+
 /**
  * Created by k2works on 2017/04/06.
  */
 public class TimeCardTransaction implements Transaction {
-    private long itsDate;
+    private Calendar itsDate;
     private double itsHours;
     private int itsEmpId;

-    public TimeCardTransaction(long date, double hours, int empId) {
+    public TimeCardTransaction(Calendar date, double hours, int empId) {
         itsDate = date;
         itsHours = hours;
         itsEmpId = empId;
diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index 2c02c29..651d354 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -86,14 +86,15 @@ public class TestPayroll extends TestCase{
         int empId = 2;
         AddHourlyEmployee t = new AddHourlyEmployee(empId, "Bill", "Home", 15.25);
         t.Execute();
-        TimeCardTransaction tct = new TimeCardTransaction(20011031,8.0,empId);
+        Calendar date = new GregorianCalendar(2001, Calendar.OCTOBER, 31);
+        TimeCardTransaction tct = new TimeCardTransaction(date,8.0,empId);
         tct.Execute();
         Employee e = PayrollDatabase.GetEmployee(empId);
         assertNotNull(e);
         PaymentClassification pc = e.GetClassification();
         HourlyClassification hc = (HourlyClassification) pc;
         assertNotNull(hc);
-        TimeCard tc = hc.GetTimeCard(20011031);
+        TimeCard tc = hc.GetTimeCard(date);
         assertNotNull(tc);
         assertEquals(8.0, tc.GetHours());
     }
@@ -120,7 +121,8 @@ public class TestPayroll extends TestCase{
         int empId = 2;
         AddHourlyEmployee t = new AddHourlyEmployee(empId, "Bill","Home",15.25);
         t.Execute();
-        TimeCardTransaction tct = new TimeCardTransaction(20011031,8.0, empId);
+        Calendar date = new GregorianCalendar(2001, Calendar.OCTOBER, 31);
+        TimeCardTransaction tct = new TimeCardTransaction(date,8.0, empId);
         tct.Execute();
         Employee e = PayrollDatabase.GetEmployee(empId);
         assertNotNull(e);
@@ -318,6 +320,19 @@ public class TestPayroll extends TestCase{
         ValidatePaycheck(pt, empId, payDate, 0.0);
     }

+    public void testPaySingleHourlyEmployeeOneTimeCard() {
+        System.err.println("TestPaySingleHourlyEmployeeOneTimeCard");
+        int empId = 2;
+        AddHourlyEmployee t = new AddHourlyEmployee(empId,"Bill","Home",15.25);
+        t.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 9);
+        TimeCardTransaction tc = new TimeCardTransaction(payDate, 2.0, empId);
+        tc.Execute();
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        ValidatePaycheck(pt,empId,payDate,30.5);
+    }
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);

コミット: 0978601

メッセージ

時間給の従業員の給与
・TestPaySingleHourlyEmployeeNoTimeCards

変更されたファイル

  • M src/main/java/WeeklySchedule.java
  • M src/test/java/TestPayroll.java

変更内容

commit 09786018ce4ffb04a1ac9f3ce3b0e966ab2cef73
Author: k2works <kakimomokuri@gmail.com>
Date:   Sat Apr 8 14:36:07 2017 +0900

    時間給の従業員の給与

    ・TestPaySingleHourlyEmployeeNoTimeCards

diff --git a/src/main/java/WeeklySchedule.java b/src/main/java/WeeklySchedule.java
index 26bec68..64e19f2 100644
--- a/src/main/java/WeeklySchedule.java
+++ b/src/main/java/WeeklySchedule.java
@@ -5,10 +5,13 @@ import java.util.Calendar;
  */
 public class WeeklySchedule implements PaymentSchedule {
     public boolean IsPayDate(Calendar payDate) {
-        return false;
+        return (payDate.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY);
     }

     public Calendar GetPayPeriodStartDate(Calendar payDate) {
-        return null;
+        Calendar payPeriodStartDate = Calendar.getInstance();
+        payPeriodStartDate.setTime(payDate.getTime());
+        payPeriodStartDate.add(Calendar.DATE, -6);
+        return payPeriodStartDate;
     }
 }
diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index 1885821..2c02c29 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -307,6 +307,17 @@ public class TestPayroll extends TestCase{
         assertNull(pc);
     }

+    public void testPaySingleHourlyEmployeeNoTimeCards() {
+        System.err.println("TestPaySingleHourlyEmployeeNoTimeCards");
+        int empId = 2;
+        AddHourlyEmployee t = new AddHourlyEmployee(empId,"Bill","Home",15.25);
+        t.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 9);
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        ValidatePaycheck(pt, empId, payDate, 0.0);
+    }
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);