package model import ( "fmt" "reflect" "github.com/go-rod/rod" ) type BordroProperty struct { Index int Value string Id string //DomType string } type Bordro struct { Sube BordroProperty // 0 Bolum BordroProperty // TCKimlikNo BordroProperty // AdiSoyadi BordroProperty // NormalGun BordroProperty //4 HaftaTatili BordroProperty // X75 BordroProperty // EksikGunNeden BordroProperty // ArgeDestekVeTasarim BordroProperty // FazlaMesai BordroProperty // 9 GeceMesaisi BordroProperty //10 BayramMesaisi BordroProperty // Yol BordroProperty //12 YemekGun BordroProperty //13 YemekTutar BordroProperty // Aile BordroProperty //15 Cocuk BordroProperty // Evlenme BordroProperty //17 Dogum BordroProperty //18 Olum BordroProperty //19 Askerlik BordroProperty //20 Ozelsigorta BordroProperty //21 BireyselEmeklilik BordroProperty //22 HayatSigortasi BordroProperty //23 PrimNet BordroProperty //24 PrimBrut BordroProperty // IkramiyeNet BordroProperty //25 IkramiyeBrut BordroProperty // KıdemTazminatı BordroProperty //28 IhbarTazminati BordroProperty //29 Bayram BordroProperty //30 Yakacak BordroProperty //31 HuzurHakki BordroProperty //32 HediyeKart BordroProperty YakitKart BordroProperty YillikIzin BordroProperty MaasFarki BordroProperty AyirilisPaketi BordroProperty RamazanKumanyasi BordroProperty TelefonDesteği BordroProperty //39 EkOdemeNet BordroProperty EkOdemeBrut BordroProperty IsAramaIzni BordroProperty Prim2 BordroProperty //43 Prim3 BordroProperty Prim4 BordroProperty CalismaIzniHarci BordroProperty OzeldurumOdenesi BordroProperty EmekliSandigiCalisanPrimi BordroProperty LisanTazminati BordroProperty OdulOdenesi BordroProperty IsSonuTazminati BordroProperty VergiIstisnasiEkOdeme BordroProperty KresYardimi BordroProperty //53 EsnekYanHak BordroProperty AracKullanim BordroProperty EgitimDesteği BordroProperty DelegeUcreti BordroProperty HarcTutarlari BordroProperty SendikaIscilikFarkUcretleri BordroProperty IsinmaDesteği BordroProperty SoforlukMesaisi BordroProperty Avans BordroProperty Icra BordroProperty Sendika BordroProperty HediyeKart2 BordroProperty YemekAyni BordroProperty RamazanKumanyasiAyni BordroProperty BagimliOSSKesintisi BordroProperty CalismaIzniHarciAyni BordroProperty TrafikCezasiKesintisi BordroProperty BesKesintisi BordroProperty YakitKart2 BordroProperty GrupBesPersonelPayiKesintisi BordroProperty IstisnadanKaynaklananKesinti BordroProperty EmekliSandigiCalisanPrimKesintisi BordroProperty PesinYillikIzinKesintisi BordroProperty TelefonLimitAsimKesintisi BordroProperty ZimmetTamirKesintisi BordroProperty YakitAsimKesintisi BordroProperty DigerAvanslar BordroProperty DigerKesintiler BordroProperty ZorunluBesKesintisi BordroProperty ZimmetliBilgisayarTamirUcreti BordroProperty HarcTutarlari2 BordroProperty PrimAvansi BordroProperty MasrafKesintisi BordroProperty BireyselEmekPrimi BordroProperty //88 OzelsigortaPrimi BordroProperty //89 DigerIstisnalar BordroProperty //90 } func getPageId(id string) string { switch id { case "NormalGun": return "#normalGun0" //Normal Gün case "HaftaTatili": return "#normalGun1" //, "checkbox" Hafta Tatili case "X75": return "" //x7.5 case "EksikGunNeden": return "" //Eksik Gün Neden case "ArgeDestekVeTasarim": return "" //ARGE-Destek ve Tasarım Faaliyeti case "FazlaMesai": return "#ekKazancCarpan0" //Fazla Mesai case "GeceMesaisi": return "#ekKazancCarpan1" //Gece Mesaisi case "BayramMesaisi": return "" //Bayram Mesaisi case "Yol": return "#ekKazancCarpan3" //Yol case "YemekGun": return "#ekKazancCarpan4" //Yemek (Gün) case "YemekTutar": return "" //Yemek (Tutar) case "Aile": return "#ekKazancDeger5" //Aile case "Cocuk": return "" //Çocuk case "Evlenme": return "#ekKazancDeger7" //Evlenme case "Dogum": return "#ekKazancDeger8" //Doğum case "Olum": return "#ekKazancDeger9" //Ölüm case "Askerlik": return "#ekKazancDeger10" //Askerlik case "Ozelsigorta": return "#ekKazancDeger11" //Özel Sigorta case "BireyselEmeklilik": return "#ekKazancDeger12" //Bireysel Emeklilik case "HayatSigortasi": return "#ekKazancDeger13" //Hayat Sigortası case "PrimNet": return "#ekKazancDeger14" //Prim (Net) case "PrimBrut": return "#ekKazancDeger15" //Prim (Brüt) case "IkramiyeNet": return "" //İkramiye (Net) case "IkramiyeBrut": return "" //İkramiye (Brüt) case "KıdemTazminatı": return "#ekKazancDeger16" //Kıdem Tazminatı case "IhbarTazminati": return "#ekKazancDeger17" //İhbar Tazminatı case "Bayram": return "#ekKazancDeger18" //Bayram case "Yakacak": return "#ekKazancDeger19" //Yakacak case "HuzurHakki": return "#ekKazancDeger23" //Huzur Hakkı case "HediyeKart": return "" //Hediye Kart* case "YakitKart": return "" //Yakıt Kart* case "YillikIzin": return "" //Yıllık İzin case "MaasFarki": return "" //Maaş Farkı case "AyirilisPaketi": return "" //Ayrılış Paketi case "RamazanKumanyasi": return "" //Ramazan Kumanyası* case "TelefonDesteği": return "#ekKazancDeger21" //Telefon Desteği case "EkOdemeNet": return "" //Ek Ödeme (Net) case "EkOdemeBrut": return "" //Ek Ödeme (Brüt) case "IsAramaIzni": return "" //İş Arama İzni case "Prim2": return "#ekKazancDeger20" //Prim2 case "Prim3": return "" //Prim3 case "Prim4": return "" //Prim4 case "CalismaIzniHarci": return "" //Çalışma İzni Harç. Vb.* case "OzeldurumOdenesi": return "" //Özel Durum Ödemesi case "EmekliSandigiCalisanPrimi": return "" //Emekli Sandığı Çalışan Primi case "LisanTazminati": return "" //Lisan Tazminatı case "OdulOdenesi": return "" //Ödül Ödemesi case "IsSonuTazminati": return "" //İş Sonu Tazminatı case "VergiIstisnasiEkOdeme": return "" //Vergi İstisnası Ek Ödeme case "KresYardimi": return "#ekKazancDeger22" //Kreş Yardımı case "EsnekYanHak": return "" //Esnek Yan Hak case "AracKullanim": return "" //Araç Kullanım case "EgitimDesteği": return "" //Eğitim Desteği case "DelegeUcreti": return "" //Delege Ücreti case "HarcTutarlari": return "" //Harç Tutarları* case "SendikaIscilikFarkUcretleri": return "" //Sendika İşçilik Fark Ücretleri case "IsinmaDesteği": return "" //Isınma Desteği case "SoforlukMesaisi": return "" //Şoförlük Mesaisi case "Avans": return "" //Avans case "Icra": return "" //icra case "Sendika": return "" //Sendika case "HediyeKart2": return "" //Hediye Kart case "YemekAyni": return "" //Yemek (Ayni) case "RamazanKumanyasiAyni": return "" //Ramazan Kumanyası (Ayni) case "BagimliOSSKesintisi": return "" //Bağımlı (Eş-Çocuk) ÖSS Kesintisi case "CalismaIzniHarciAyni": return "" //Çalışma İzni Harç. Vb.(Ayni) case "TrafikCezasiKesintisi": return "" //Trafik Cezası Kesintisi case "BesKesintisi": return "" case "YakitKart2": return "" case "GrupBesPersonelPayiKesintisi": return "" case "IstisnadanKaynaklananKesinti": return "" case "EmekliSandigiCalisanPrimKesintisi": return "" case "PesinYillikIzinKesintisi": return "" case "TelefonLimitAsimKesintisi": return "" case "ZimmetTamirKesintisi": return "" case "YakitAsimKesintisi": return "" case "DigerAvanslar": return "" case "DigerKesintiler": return "" case "ZorunluBesKesintisi": return "" case "ZimmetliBilgisayarTamirUcreti": return "" case "HarcTutarlari2": return "" case "PrimAvansi": return "" case "MasrafKesintisi": return "" case "BireyselEmekPrimi": return "#bireyselEmeklilikIstisna" case "OzelsigortaPrimi": return "#ozelSigortaIstisna" case "DigerIstisnalar": return "#digerIstisna" default: return "" } } func (b *Bordro) FillBordroForm(rodForm *rod.Page) error { objValue := reflect.ValueOf(b).Elem() objType := objValue.Type() for i := 0; i < objValue.NumField(); i++ { field := objValue.Field(i) fieldName := objType.Field(i).Name valueField := field.FieldByName("Value") idField := field.FieldByName("Id") idValue := idField.Interface().(string) if idValue != "" { elem, err := rodForm.Element(idField.Interface().(string)) if err != nil { return err } value := valueField.Interface().(string) // switch expression { // case "input": // //elem.Input(value) // } elem.Input(value) } fmt.Print(fieldName) } return nil } // BordroProperty structının tipi de olabilir drop checkbox vs ayrı bir fonksiyon çalışabilir getPageId den dönebilirsin func NewFromExcelLine(rows []string) (*Bordro, error) { bordro := Bordro{} // Yeni bir Bordro örneği oluştur //her indexi eşitleyebilirsin bordro objesine veya tek // Iterate over the fields of MyStruct objValue := reflect.ValueOf(&bordro).Elem() objType := objValue.Type() for i := 0; i < objValue.NumField(); i++ { field := objValue.Field(i) fieldName := objType.Field(i).Name indexField := field.FieldByName("Index") valueField := field.FieldByName("Value") idField := field.FieldByName("Id") if len(rows) > i { indexField.SetInt(int64(i)) valueField.SetString(rows[i]) idField.SetString(getPageId(fieldName)) } else { indexField.SetInt(int64(i)) valueField.SetString("") idField.SetString(getPageId(fieldName)) } fmt.Print(field) fmt.Print(fieldName) } fmt.Print(objType) //bordro.Sube = ExcelCellValue{ExcelIndex: 0} return &bordro, nil }