revisi back date dan dpjp login

This commit is contained in:
AnggerRevo5
2026-04-13 23:00:14 +07:00
parent cc6abb00ac
commit a6af3d5f3f
4 changed files with 38 additions and 10 deletions
+1
View File
@@ -228,6 +228,7 @@ type BillingRequest struct {
Ruangan string `json:"ruangan" binding:"required"`
Kelas string `json:"kelas" binding:"required"`
Tindakan_RS []string `json:"tindakan_rs" binding:"required"`
Tanggal_Masuk string `json:"tanggal_masuk"` // ← Added: Tanggal masuk dari frontend (format: YYYY-MM-DD)
Tanggal_Keluar string `json:"tanggal_keluar"`
Billing_sign string `json:"billing_sign"`
ICD9 []string `json:"icd9"`
+25 -1
View File
@@ -314,6 +314,30 @@ func DataFromFE(input models.BillingRequest) (
now := time.Now()
// Parse Tanggal_Masuk - accept multiple formats
var masukPtr *time.Time
if input.Tanggal_Masuk != "" && input.Tanggal_Masuk != "null" {
s := input.Tanggal_Masuk
var parsed time.Time
var err error
layouts := []string{time.RFC3339, "2006-01-02 15:04:05", "2006-01-02"}
for _, layout := range layouts {
parsed, err = time.Parse(layout, s)
if err == nil {
t := parsed
masukPtr = &t
break
}
}
if masukPtr == nil {
tx.Rollback()
return nil, nil, nil, nil, nil, fmt.Errorf("invalid tanggal_masuk format: %s", input.Tanggal_Masuk)
}
} else {
// Jika tidak ada input, default ke hari ini
masukPtr = &now
}
// Parse Tanggal_Keluar (frontend sends string). Accept multiple formats.
var keluarPtr *time.Time
if input.Tanggal_Keluar != "" && input.Tanggal_Keluar != "null" {
@@ -355,7 +379,7 @@ func DataFromFE(input models.BillingRequest) (
billing = models.BillingPasien{
ID_Pasien: pasien.ID_Pasien,
Cara_Bayar: input.Cara_Bayar,
Tanggal_masuk: &now,
Tanggal_masuk: masukPtr,
Tanggal_keluar: keluarPtr,
Total_Tarif_RS: input.Total_Tarif_RS,
Total_Klaim: input.Total_Klaim_BPJS, // ← Changed: Use input value instead of hardcoded 0
@@ -46,6 +46,7 @@ func GetRiwayatPasienAll(db *gorm.DB) ([]models.Riwayat_Pasien_all, error) {
if err := db.Table("\"billing_tindakan\"").
Where("\"ID_Billing\" IN ?", billingIDs).
Select("\"ID_Billing\", \"ID_Tarif_RS\" as \"Kode\"").
Order("\"ID_Billing\" ASC, \"tanggal_tindakan\" ASC").
Scan(&tindakanRows).Error; err != nil {
return nil, err
}
@@ -54,7 +55,7 @@ func GetRiwayatPasienAll(db *gorm.DB) ([]models.Riwayat_Pasien_all, error) {
tindakanMap[t.ID_Billing] = append(tindakanMap[t.ID_Billing], t.Kode)
}
// Ambil tanggal tindakan dari tabel billing_tindakan
// Ambil tanggal tindakan dari tabel billing_tindakan (ambil yang pertama aja per billing supaya konsisten)
tindakanDateMap := make(map[int]*time.Time)
var tindakanDateRows []struct {
ID_Billing int
@@ -64,12 +65,13 @@ func GetRiwayatPasienAll(db *gorm.DB) ([]models.Riwayat_Pasien_all, error) {
if err := db.Table("\"billing_tindakan\"").
Where("\"ID_Billing\" IN ?", billingIDs).
Select("\"ID_Billing\", \"tanggal_tindakan\"").
Order("\"ID_Billing\" ASC, \"tanggal_tindakan\" ASC").
Scan(&tindakanDateRows).Error; err != nil {
return nil, err
}
for _, t := range tindakanDateRows {
if t.Tanggal_Tindakan != nil {
if t.Tanggal_Tindakan != nil && tindakanDateMap[t.ID_Billing] == nil {
tindakanDateMap[t.ID_Billing] = t.Tanggal_Tindakan
}
}
@@ -262,6 +264,7 @@ func GetAllRiwayatpasien(db *gorm.DB) ([]models.Request_Admin_Inacbg, error) {
if err := db.Table("\"billing_tindakan\"").
Where("\"ID_Billing\" IN ?", billingIDs).
Select("\"ID_Billing\", \"ID_Tarif_RS\" as \"Kode\"").
Order("\"ID_Billing\" ASC, \"tanggal_tindakan\" ASC").
Scan(&tindakanRows).Error; err != nil {
return nil, err
}