#20 - wip
This commit is contained in:
		| @@ -47,3 +47,24 @@ | ||||
|     -webkit-box-shadow: -5px 0 0 #527ABA, 5px 0 0 #527ABA; | ||||
|     box-shadow: -5px 0 0 #527ABA, 5px 0 0 #527ABA; | ||||
| } | ||||
|  | ||||
| ::-webkit-scrollbar { | ||||
|     width: 8px; | ||||
|     height: 8px; | ||||
| } | ||||
|  | ||||
| ::-webkit-scrollbar-track { | ||||
|     border-radius: 100vh; | ||||
|     background: transparent; | ||||
| } | ||||
|  | ||||
| ::-webkit-scrollbar-thumb { | ||||
|     border-radius: 8px; | ||||
|     background: #dadce0; | ||||
|     border: 4px solid transparent; | ||||
| } | ||||
|  | ||||
| ::-webkit-scrollbar-thumb:hover { | ||||
|     background: #dadce0; | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										238
									
								
								resources/js/Pages/VacationRequest/Create.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										238
									
								
								resources/js/Pages/VacationRequest/Create.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,238 @@ | ||||
| <template> | ||||
|     <InertiaHead title="Składanie wniosku urlopowego" /> | ||||
|     <div class="bg-white sm:rounded-lg shadow-md"> | ||||
|         <div class="p-4 sm:px-6"> | ||||
|             <h2 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 Złóż wniosek urlopowy | ||||
|             </h2> | ||||
|         </div> | ||||
|         <form | ||||
|             class="border-t border-gray-200 px-6" | ||||
|             @submit.prevent="createForm" | ||||
|         > | ||||
|             <Listbox | ||||
|                 v-model="form.vacationType" | ||||
|                 as="div" | ||||
|                 class="sm:grid sm:grid-cols-3 py-4 items-center" | ||||
|             > | ||||
|                 <ListboxLabel class="block text-sm font-medium text-gray-700"> | ||||
|                     Rodzaj wniosku | ||||
|                 </ListboxLabel> | ||||
|                 <div class="mt-1 relative sm:mt-0 sm:col-span-2"> | ||||
|                     <ListboxButton | ||||
|                         class="bg-white relative w-full max-w-lg border rounded-md shadow-sm pl-3 pr-10 py-2 text-left cursor-default sm:text-sm focus:ring-1" | ||||
|                         :class="{ 'border-red-300 text-red-900 focus:outline-none focus:ring-red-500 focus:border-red-500': form.errors.vacationType, 'focus:ring-blumilk-500 focus:border-blumilk-500 sm:text-sm border-gray-300': !form.errors.vacationType }" | ||||
|                     > | ||||
|                         <span class="block truncate">{{ form.vacationType.label }}</span> | ||||
|                         <span class="absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none"> | ||||
|                             <SelectorIcon class="h-5 w-5 text-gray-400" /> | ||||
|                         </span> | ||||
|                     </ListboxButton> | ||||
|  | ||||
|                     <transition | ||||
|                         leave-active-class="transition ease-in duration-100" | ||||
|                         leave-from-class="opacity-100" | ||||
|                         leave-to-class="opacity-0" | ||||
|                     > | ||||
|                         <ListboxOptions | ||||
|                             class="absolute z-10 mt-1 w-full max-w-lg bg-white shadow-lg max-h-60 rounded-md py-1 text-base ring-1 ring-black ring-opacity-5 overflow-auto focus:outline-none sm:text-sm" | ||||
|                         > | ||||
|                             <ListboxOption | ||||
|                                 v-for="vacationType in vacationTypes" | ||||
|                                 :key="vacationType.value" | ||||
|                                 v-slot="{ active, selected }" | ||||
|                                 as="template" | ||||
|                                 :value="vacationType" | ||||
|                             > | ||||
|                                 <li :class="[active ? 'text-white bg-blumilk-600' : 'text-gray-900', 'cursor-default select-none relative py-2 pl-3 pr-9']"> | ||||
|                                     <span :class="[selected ? 'font-semibold' : 'font-normal', 'block truncate']"> | ||||
|                                         {{ vacationType.label }} | ||||
|                                     </span> | ||||
|  | ||||
|                                     <span | ||||
|                                         v-if="selected" | ||||
|                                         :class="[active ? 'text-white' : 'text-blumilk-600', 'absolute inset-y-0 right-0 flex items-center pr-4']" | ||||
|                                     > | ||||
|                                         <CheckIcon class="h-5 w-5" /> | ||||
|                                     </span> | ||||
|                                 </li> | ||||
|                             </ListboxOption> | ||||
|                         </ListboxOptions> | ||||
|                     </transition> | ||||
|                     <p | ||||
|                         v-if="form.errors.vacationType" | ||||
|                         class="mt-2 text-sm text-red-600" | ||||
|                     > | ||||
|                         {{ form.errors.vacationType }} | ||||
|                     </p> | ||||
|                 </div> | ||||
|             </Listbox> | ||||
|             <div class="sm:grid sm:grid-cols-3 py-4 items-center"> | ||||
|                 <label | ||||
|                     for="date_from" | ||||
|                     class="block text-sm font-medium text-gray-700 sm:mt-px" | ||||
|                 > | ||||
|                     Planowany urlop od | ||||
|                 </label> | ||||
|                 <div class="mt-1 sm:mt-0 sm:col-span-2"> | ||||
|                     <FlatPickr | ||||
|                         id="date_from" | ||||
|                         v-model="form.dateFrom" | ||||
|                         :config="fromInputConfig" | ||||
|                         placeholder="Wybierz datę" | ||||
|                         class="block w-full max-w-lg shadow-sm rounded-md sm:text-sm" | ||||
|                         :class="{ 'border-red-300 text-red-900 focus:outline-none focus:ring-red-500 focus:border-red-500': form.errors.dateFrom, 'focus:ring-blumilk-500 focus:border-blumilk-500 sm:text-sm border-gray-300': !form.errors.dateFrom }" | ||||
|                         @on-change="onFromChange" | ||||
|                     /> | ||||
|                     <p | ||||
|                         v-if="form.errors.dateFrom" | ||||
|                         class="mt-2 text-sm text-red-600" | ||||
|                     > | ||||
|                         {{ form.errors.dateFrom }} | ||||
|                     </p> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div class="sm:grid sm:grid-cols-3 py-4 items-center"> | ||||
|                 <label | ||||
|                     for="date_from" | ||||
|                     class="block text-sm font-medium text-gray-700 sm:mt-px" | ||||
|                 > | ||||
|                     Planowany urlop do | ||||
|                 </label> | ||||
|                 <div class="mt-1 sm:mt-0 sm:col-span-2"> | ||||
|                     <FlatPickr | ||||
|                         id="date_to" | ||||
|                         v-model="form.dateTo" | ||||
|                         :config="toInputConfig" | ||||
|                         placeholder="Wybierz datę" | ||||
|                         class="block w-full max-w-lg shadow-sm rounded-md sm:text-sm" | ||||
|                         :class="{ 'border-red-300 text-red-900 focus:outline-none focus:ring-red-500 focus:border-red-500': form.errors.dateTo, 'focus:ring-blumilk-500 focus:border-blumilk-500 sm:text-sm border-gray-300': !form.errors.dateTo }" | ||||
|                         @on-change="onToChange" | ||||
|                     /> | ||||
|                     <p | ||||
|                         v-if="form.errors.dateTo" | ||||
|                         class="mt-2 text-sm text-red-600" | ||||
|                     > | ||||
|                         {{ form.errors.dateTo }} | ||||
|                     </p> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div class="sm:grid sm:grid-cols-3 py-4 items-center"> | ||||
|                 <span class="block text-sm font-medium text-gray-700 sm:mt-px">Liczba dni urlopu</span> | ||||
|                 <div | ||||
|                     class="mt-1 sm:mt-0 sm:col-span-2 w-full max-w-lg bg-gray-50 border border-gray-300 rounded-md px-4 py-2 inline-flex items-center text-gray-500 sm:text-sm" | ||||
|                 > | ||||
|                     1 | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div class="sm:grid sm:grid-cols-3 py-4 items-center"> | ||||
|                 <label | ||||
|                     for="comment" | ||||
|                     class="block text-sm font-medium text-gray-700" | ||||
|                 > | ||||
|                     Komentarz | ||||
|                 </label> | ||||
|                 <div class="mt-1 sm:mt-0 sm:col-span-2"> | ||||
|                     <textarea | ||||
|                         id="comment" | ||||
|                         rows="4" | ||||
|                         class="shadow-sm focus:ring-indigo-500 focus:border-indigo-500 block w-full max-w-lg sm:text-sm border-gray-300 rounded-md" | ||||
|                     /> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div class="flex justify-end py-3"> | ||||
|                 <div class="space-x-3"> | ||||
|                     <InertiaLink | ||||
|                         href="/vacation-request" | ||||
|                         class="bg-white py-2 px-4 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blumilk-500" | ||||
|                     > | ||||
|                         Anuluj | ||||
|                     </InertiaLink> | ||||
|                     <button | ||||
|                         type="submit" | ||||
|                         :disabled="form.processing" | ||||
|                         class="inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-blumilk-600 hover:bg-blumilk-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blumilk-500" | ||||
|                     > | ||||
|                         Zapisz | ||||
|                     </button> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </form> | ||||
|     </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import {useForm} from '@inertiajs/inertia-vue3'; | ||||
| import FlatPickr from 'vue-flatpickr-component'; | ||||
| import {Listbox, ListboxButton, ListboxLabel, ListboxOption, ListboxOptions} from '@headlessui/vue'; | ||||
| import {CheckIcon, SelectorIcon} from '@heroicons/vue/solid'; | ||||
| import {reactive} from 'vue'; | ||||
|  | ||||
| export default { | ||||
|     dateFrom: 'UserCreate', | ||||
|     components: { | ||||
|         FlatPickr, | ||||
|         Listbox, | ||||
|         ListboxButton, | ||||
|         ListboxLabel, | ||||
|         ListboxOption, | ||||
|         ListboxOptions, | ||||
|         CheckIcon, | ||||
|         SelectorIcon, | ||||
|     }, | ||||
|     props: { | ||||
|         vacationTypes: { | ||||
|             type: Object, | ||||
|             default: () => null, | ||||
|         }, | ||||
|         holidays: { | ||||
|             type: Object, | ||||
|             default: () => null, | ||||
|         }, | ||||
|     }, | ||||
|     setup(props) { | ||||
|         const form = useForm({ | ||||
|             dateFrom: null, | ||||
|             dateTo: null, | ||||
|             vacationType: props.vacationTypes[0], | ||||
|         }); | ||||
|  | ||||
|         const disableDates = [ | ||||
|             date => (date.getDay() === 0 || date.getDay() === 6), | ||||
|         ]; | ||||
|  | ||||
|         const fromInputConfig = reactive({ | ||||
|             maxDate: null, | ||||
|             disable: disableDates, | ||||
|         }); | ||||
|  | ||||
|         const toInputConfig = reactive({ | ||||
|             minDate: null, | ||||
|             disable: disableDates, | ||||
|         }); | ||||
|  | ||||
|         return { | ||||
|             form, | ||||
|             fromInputConfig, | ||||
|             toInputConfig, | ||||
|         }; | ||||
|     }, | ||||
|     methods: { | ||||
|         createForm() { | ||||
|             this.form | ||||
|                 .transform(data => ({ | ||||
|                     ...data, | ||||
|                     vacationType: data.vacationType.value, | ||||
|                 })) | ||||
|                 .post('/vacation-request'); | ||||
|         }, | ||||
|         onFromChange(selectedDates, dateStr) { | ||||
|             this.toInputConfig.minDate = dateStr; | ||||
|         }, | ||||
|         onToChange(selectedDates, dateStr) { | ||||
|             this.fromInputConfig.maxDate = dateStr; | ||||
|         }, | ||||
|     }, | ||||
|  | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										223
									
								
								resources/js/Pages/VacationRequest/Index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										223
									
								
								resources/js/Pages/VacationRequest/Index.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,223 @@ | ||||
| <template> | ||||
|     <InertiaHead title="Twoje wnioski urlopowe" /> | ||||
|     <div class="bg-white sm:rounded-lg shadow-md"> | ||||
|         <div class="flex justify-between items-center p-4 sm:px-6"> | ||||
|             <div> | ||||
|                 <h2 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                     Twoje wnioski urlopowe | ||||
|                 </h2> | ||||
|             </div> | ||||
|             <div> | ||||
|                 <InertiaLink | ||||
|                     href="vacation-requests/create" | ||||
|                     class="inline-flex items-center px-4 py-3 border border-transparent text-sm leading-4 font-medium rounded-md shadow-sm text-white bg-blumilk-600 hover:bg-blumilk-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blumilk-500" | ||||
|                 > | ||||
|                     Dodaj wniosek | ||||
|                 </InertiaLink> | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="overflow-x-auto xl:overflow-x-visible overflow-y-auto xl:overflow-y-visible"> | ||||
|             <table class="min-w-full divide-y divide-gray-200"> | ||||
|                 <thead class="bg-gray-50"> | ||||
|                     <tr> | ||||
|                         <th | ||||
|                             scope="col" | ||||
|                             class="px-6 py-3 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider" | ||||
|                         > | ||||
|                             Numer | ||||
|                         </th> | ||||
|                         <th | ||||
|                             scope="col" | ||||
|                             class="px-6 py-3 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider" | ||||
|                         > | ||||
|                             Rodzaj urlopu | ||||
|                         </th> | ||||
|                         <th | ||||
|                             scope="col" | ||||
|                             class="px-6 py-3 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider" | ||||
|                         > | ||||
|                             Od | ||||
|                         </th> | ||||
|                         <th | ||||
|                             scope="col" | ||||
|                             class="px-6 py-3 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider" | ||||
|                         > | ||||
|                             Do | ||||
|                         </th> | ||||
|                         <th | ||||
|                             scope="col" | ||||
|                             class="px-6 py-3 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider" | ||||
|                         > | ||||
|                             Dni urlopu | ||||
|                         </th> | ||||
|                         <th | ||||
|                             scope="col" | ||||
|                             class="px-6 py-3 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider" | ||||
|                         /> | ||||
|                     </tr> | ||||
|                 </thead> | ||||
|                 <tbody class="bg-white divide-y divide-gray-100"> | ||||
|                     <tr | ||||
|                         v-for="request in requests.data" | ||||
|                         :key="request.id" | ||||
|                         class="hover:bg-blumilk-25" | ||||
|                     > | ||||
|                         <td class="px-4 py-4 whitespace-nowrap text-sm text-gray-500"> | ||||
|                             {{ request.id }} | ||||
|                         </td> | ||||
|                         <td class="px-4 py-4 whitespace-nowrap text-sm text-gray-500"> | ||||
|                             {{ request.type }} | ||||
|                         </td> | ||||
|                         <td class="px-4 py-4 whitespace-nowrap text-sm text-gray-500"> | ||||
|                             {{ request.from }} | ||||
|                         </td> | ||||
|                         <td class="px-4 py-4 whitespace-nowrap text-sm text-gray-500"> | ||||
|                             {{ request.to }} | ||||
|                         </td> | ||||
|                         <td class="px-4 py-4 whitespace-nowrap text-sm text-gray-500"> | ||||
|                             X | ||||
|                         </td> | ||||
|                         <td class="px-4 py-4 whitespace-nowrap text-sm text-gray-500 text-right"> | ||||
|                             <Menu | ||||
|                                 as="div" | ||||
|                                 class="relative inline-block text-left" | ||||
|                             > | ||||
|                                 <MenuButton class="rounded-full flex items-center text-gray-400 hover:text-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-blumilk-500"> | ||||
|                                     <DotsVerticalIcon | ||||
|                                         class="h-5 w-5" | ||||
|                                         aria-hidden="true" | ||||
|                                     /> | ||||
|                                 </MenuButton> | ||||
|  | ||||
|                                 <transition | ||||
|                                     enter-active-class="transition ease-out duration-100" | ||||
|                                     enter-from-class="transform opacity-0 scale-95" | ||||
|                                     enter-to-class="transform opacity-100 scale-100" | ||||
|                                     leave-active-class="transition ease-in duration-75" | ||||
|                                     leave-from-class="transform opacity-100 scale-100" | ||||
|                                     leave-to-class="transform opacity-0 scale-95" | ||||
|                                 > | ||||
|                                     <MenuItems class="origin-top-right absolute right-0 mt-2 w-56 z-10 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 focus:outline-none"> | ||||
|                                         <div | ||||
|                                             class="py-1" | ||||
|                                         > | ||||
|                                             <MenuItem | ||||
|                                                 v-slot="{ active }" | ||||
|                                                 class="flex" | ||||
|                                             > | ||||
|                                                 <InertiaLink | ||||
|                                                     :class="[active ? 'bg-gray-100 text-gray-900' : 'text-gray-700', 'font-medium block px-4 py-2 text-sm']" | ||||
|                                                 > | ||||
|                                                     <PencilIcon | ||||
|                                                         class="mr-2 h-5 w-5 text-blue-500" | ||||
|                                                         aria-hidden="true" | ||||
|                                                     /> Edytuj | ||||
|                                                 </InertiaLink> | ||||
|                                             </MenuItem> | ||||
|                                             <MenuItem | ||||
|                                                 v-slot="{ active }" | ||||
|                                                 class="flex" | ||||
|                                             > | ||||
|                                                 <InertiaLink | ||||
|                                                     as="button" | ||||
|                                                     method="delete" | ||||
|                                                     :preserve-scroll="true" | ||||
|                                                     :class="[active ? 'bg-gray-100 text-gray-900' : 'text-gray-700', 'block w-full text-left font-medium px-4 py-2 text-sm']" | ||||
|                                                 > | ||||
|                                                     <TrashIcon | ||||
|                                                         class="mr-2 h-5 w-5 text-red-500" | ||||
|                                                     /> Usuń | ||||
|                                                 </InertiaLink> | ||||
|                                             </MenuItem> | ||||
|                                         </div> | ||||
|                                     </MenuItems> | ||||
|                                 </transition> | ||||
|                             </Menu> | ||||
|                         </td> | ||||
|                     </tr> | ||||
|                     <tr | ||||
|                         v-if="! requests.data.length" | ||||
|                     > | ||||
|                         <td | ||||
|                             colspan="100%" | ||||
|                             class="text-center py-4 text-xl leading-5 text-gray-700" | ||||
|                         > | ||||
|                             Brak danych | ||||
|                         </td> | ||||
|                     </tr> | ||||
|                 </tbody> | ||||
|             </table> | ||||
|             <div | ||||
|                 v-if="requests.data.length && requests.meta.last_page !== 1" | ||||
|                 class="bg-white px-4 py-3 flex items-center justify-between border-t border-gray-200 sm:px-6 rounded-b-lg" | ||||
|             > | ||||
|                 <div class="flex-1 flex justify-between sm:hidden"> | ||||
|                     <InertiaLink | ||||
|                         :is="requests.links.prev ? 'InertiaLink': 'span'" | ||||
|                         :href="requests.links.prev" | ||||
|                         class="relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50" | ||||
|                     > | ||||
|                         Poprzednia | ||||
|                     </InertiaLink> | ||||
|                     <Component | ||||
|                         :is="requests.links.next ? 'InertiaLink': 'span'" | ||||
|                         :href="requests.links.next" | ||||
|                         class="ml-3 relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50" | ||||
|                     > | ||||
|                         Następna | ||||
|                     </Component> | ||||
|                 </div> | ||||
|                 <div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between"> | ||||
|                     <div class="text-sm text-gray-700"> | ||||
|                         Wyświetlanie | ||||
|                         <span class="font-medium">{{ requests.meta.from }}</span> | ||||
|                         od | ||||
|                         <span class="font-medium">{{ requests.meta.to }}</span> | ||||
|                         do | ||||
|                         <span class="font-medium">{{ requests.meta.total }}</span> | ||||
|                         wyników | ||||
|                     </div> | ||||
|                     <nav class="relative z-0 inline-flex space-x-1"> | ||||
|                         <template | ||||
|                             v-for="(link, index) in requests.meta.links" | ||||
|                             :key="index" | ||||
|                         > | ||||
|                             <Component | ||||
|                                 :is="link.url ? 'InertiaLink' : 'span'" | ||||
|                                 :href="link.url" | ||||
|                                 :preserve-scroll="true" | ||||
|                                 class="relative inline-flex items-center px-4 py-2 border rounded-md text-sm font-medium" | ||||
|                                 :class="{ 'z-10 bg-blumilk-25 border-blumilk-500 text-blumilk-600': link.active, 'bg-white border-gray-300 text-gray-500': !link.active, 'hover:bg-blumilk-25': link.url, 'border-none': !link.url}" | ||||
|                                 v-text="link.label" | ||||
|                             /> | ||||
|                         </template> | ||||
|                     </nav> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import { DotsVerticalIcon, PencilIcon, TrashIcon } from '@heroicons/vue/solid'; | ||||
| import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/vue'; | ||||
|  | ||||
| export default { | ||||
|     name: 'UserIndex', | ||||
|     components: { | ||||
|         DotsVerticalIcon, | ||||
|         PencilIcon, | ||||
|         TrashIcon, | ||||
|         Menu, | ||||
|         MenuButton, | ||||
|         MenuItem, | ||||
|         MenuItems, | ||||
|     }, | ||||
|     props: { | ||||
|         requests: { | ||||
|             type: Object, | ||||
|             default: () => null, | ||||
|         }, | ||||
|     }, | ||||
| }; | ||||
| </script> | ||||
| @@ -323,6 +323,7 @@ export default { | ||||
|             {name: 'Użytkownicy', href: '/users', current: false}, | ||||
|             {name: 'Dostępne urlopy', href: '/vacation-limits', current: false}, | ||||
|             {name: 'Dni wolne', href: '/holidays', current: false}, | ||||
|             {name: 'Wnioski urlopowe', href: '/vacation-requests', current: false}, | ||||
|         ]; | ||||
|         const userNavigation = [ | ||||
|             {name: 'Your Profile', href: '#'}, | ||||
|   | ||||
| @@ -3,5 +3,15 @@ | ||||
|   "employment_contract": "Umowa o pracę", | ||||
|   "commission_contract": "Umowa zlecenie", | ||||
|   "b2b_contract": "Kontrakt B2B", | ||||
|   "board_member_contract": "Członek zarządu" | ||||
|   "board_member_contract": "Członek zarządu", | ||||
|   "vacation": "Urlop wypoczynkowy", | ||||
|   "vacation_on_request": "Urlop na żądanie", | ||||
|   "special_vacation": "Urlop okolicznościowy", | ||||
|   "childcare_vacation": "Opieka nad dzieckiem art 188 kp", | ||||
|   "training_vacation": "Urlop szkoleniowy", | ||||
|   "unpaid_vacation": "Urlop bezpłatny", | ||||
|   "volunteering_vacation": "Wolontariat", | ||||
|   "look_for_work_vacation": "Urlop na poszukiwanie pracy", | ||||
|   "time_in_lieu": "Odbiór za święto", | ||||
|   "sick_vacation": "Zwolnienie lekarskie" | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user