Merge pull request #2627 from alberto-art3ch/feature/collection-sheet

WEB-277: Collection sheet and Productive collection sheet part I
This commit is contained in:
Felix van Hove
2025-09-03 09:48:08 +02:00
committed by GitHub
25 changed files with 412 additions and 21 deletions
@@ -174,7 +174,7 @@ export class AttachCenterMeetingComponent implements OnInit {
locale locale
}; };
this.centersService.createCenterMeeting(this.centerId, data).subscribe((response: any) => { this.centersService.createCenterMeeting(this.centerId, data).subscribe((response: any) => {
this.router.navigate(['../../'], { relativeTo: this.route }); this.router.navigate(['../../general'], { relativeTo: this.route });
}); });
} }
} }
+12
View File
@@ -282,4 +282,16 @@ export class CentersService {
executeEditCenter(centerId: string, data: any): Observable<any> { executeEditCenter(centerId: string, data: any): Observable<any> {
return this.http.put(`/groups/${centerId}`, data); return this.http.put(`/groups/${centerId}`, data);
} }
getAllMeetingFallCenters(
officeId: number,
staffId: number,
meetingDate: string,
dateFormat: string,
locale: string
): Observable<any> {
return this.http.get(
`/centers?dateFormat=${dateFormat}&locale=${locale}&meetingDate=${meetingDate}&officeId=${officeId}&staffId=${staffId}`
);
}
} }
@@ -24,7 +24,7 @@ export class CenterActionsResolver {
* @returns {Observable<any>} * @returns {Observable<any>}
*/ */
resolve(route: ActivatedRouteSnapshot): Observable<any> { resolve(route: ActivatedRouteSnapshot): Observable<any> {
const actionName = route.paramMap.get('name'); const actionName = route.paramMap.get('action');
const centerId = route.paramMap.get('centerId') || route.parent.parent.paramMap.get('centerId'); const centerId = route.paramMap.get('centerId') || route.parent.parent.paramMap.get('centerId');
switch (actionName) { switch (actionName) {
case 'Assign Staff': case 'Assign Staff':
@@ -0,0 +1,71 @@
<mat-card class="container">
<form [formGroup]="collectionSheetForm" (ngSubmit)="previewCollectionSheet()">
<div class="layout-row-wrap gap-2percent responsive-column align-start-center">
<mat-form-field class="flex-98">
<mat-label>{{ 'labels.inputs.Branch Office' | translate }}</mat-label>
<mat-select formControlName="officeId" required>
<mat-option *ngFor="let office of officesData" [value]="office.id">
{{ office.name }}
</mat-option>
</mat-select>
<mat-error *ngIf="collectionSheetForm.controls.officeId.hasError('required')">
{{ 'labels.inputs.Branch Office' | translate }} {{ 'labels.commons.is' | translate }}
<strong>{{ 'labels.commons.required' | translate }}</strong>
</mat-error>
</mat-form-field>
<mat-form-field class="flex-98" (click)="meetingDatePicker.open()" *ngIf="officeId !== null">
<mat-label>{{ 'labels.inputs.Meeting Date' | translate }}</mat-label>
<input
matInput
[min]="minDate"
[max]="maxDate"
[matDatepicker]="meetingDatePicker"
required
formControlName="meetingDate"
/>
<mat-datepicker-toggle matSuffix [for]="meetingDatePicker"></mat-datepicker-toggle>
<mat-datepicker #meetingDatePicker></mat-datepicker>
<mat-error *ngIf="collectionSheetForm.controls.meetingDate.hasError('required')">
{{ 'labels.inputs.Meeting Date' | translate }} {{ 'labels.commons.is' | translate }}
<strong>{{ 'labels.commons.required' | translate }}</strong>
</mat-error>
</mat-form-field>
<mat-form-field class="flex-98" *ngIf="officeId !== null">
<mat-label>{{ 'labels.inputs.Staff' | translate }}</mat-label>
<mat-select formControlName="staffId">
<mat-option *ngFor="let loanOfficer of loanOfficerData" [value]="loanOfficer.id">
{{ loanOfficer.displayName }}
</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field class="flex-98" *ngIf="officeId !== null">
<mat-label>{{ 'labels.inputs.Group' | translate }}</mat-label>
<mat-select formControlName="groupId">
<mat-option *ngFor="let group of groupsData" [value]="group.id">
{{ group.name }}
</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field class="flex-98" *ngIf="officeId !== null">
<mat-label>{{ 'labels.inputs.Center' | translate }}</mat-label>
<mat-select formControlName="centerId">
<mat-option *ngFor="let center of centersData" [value]="center.id">
{{ center.name }}
</mat-option>
</mat-select>
</mat-form-field>
</div>
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">{{ 'labels.buttons.Cancel' | translate }}</button>
<button mat-raised-button color="primary" [disabled]="!collectionSheetForm.valid">
<fa-icon icon="download" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Productive Collection Sheet' | translate }}
</button>
</mat-card-actions>
</form>
</mat-card>
@@ -0,0 +1,15 @@
.container {
max-width: 37em;
.margin-v {
margin: 1em 0;
}
.margin-b {
margin: 0 0 1em;
}
.margin-t {
margin-top: 1em;
}
}
@@ -0,0 +1,166 @@
import { Component, OnInit } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { CollectionsService } from '../collections.service';
import { ActivatedRoute, Router } from '@angular/router';
import { SettingsService } from 'app/settings/settings.service';
import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
import {
MatCell,
MatCellDef,
MatColumnDef,
MatHeaderCell,
MatHeaderCellDef,
MatHeaderRow,
MatHeaderRowDef,
MatRow,
MatRowDef,
MatTable
} from '@angular/material/table';
import { MatSort, MatSortHeader } from '@angular/material/sort';
import { MatPaginator } from '@angular/material/paginator';
import { OrganizationService } from 'app/organization/organization.service';
import { CentersService } from 'app/centers/centers.service';
import { GroupsService } from 'app/groups/groups.service';
import { Dates } from 'app/core/utils/dates';
import { CollectionSheetData, JLGGroupData, MeetingFallCenter } from '../models/collection-sheet-data.model';
@Component({
selector: 'mifosx-collection-sheet',
templateUrl: './collection-sheet.component.html',
styleUrl: './collection-sheet.component.scss',
imports: [
...STANDALONE_SHARED_IMPORTS,
FaIconComponent,
MatTable,
MatSort,
MatColumnDef,
MatHeaderCellDef,
MatHeaderCell,
MatSortHeader,
MatCellDef,
MatCell,
MatHeaderRowDef,
MatHeaderRow,
MatRowDef,
MatRow,
MatPaginator
]
})
export class CollectionSheetComponent implements OnInit {
/** Offices Data */
officesData: any;
/** Group Data */
groupsData: any = [];
/** Center Data */
centersData: any = [];
/** Loan Officer Data */
loanOfficerData: any = [];
/** Minimum Date allowed. */
minDate = new Date(2000, 0, 1);
/** Maximum Date allowed. */
maxDate = new Date();
/** Collection Sheet form. */
collectionSheetForm: UntypedFormGroup;
officeId: number | null = null;
meetingFallCenters: MeetingFallCenter[] | null = null;
/**
* Retrieves the offices data from `resolve`.
* @param {FormBuilder} formBuilder Form Builder.
* @param {OrganizationService} collectionsService Organization Service.
* @param {Route} route Route.
* @param {Dates} dateUtils Date Utils to format date.
* @param {Dialog} dialog Dialog component.
* @param {Router} router Router for navigation.
* @param {SettingsService} settingsService Settings Service
*/
constructor(
private formBuilder: UntypedFormBuilder,
private centerService: CentersService,
private collectionsService: CollectionsService,
private organizationService: OrganizationService,
private router: Router,
private route: ActivatedRoute,
private settingsService: SettingsService,
private dateUtils: Dates
) {
this.route.data.subscribe((data: { officesData: any }) => {
this.officesData = data.officesData;
});
}
ngOnInit() {
this.maxDate = this.settingsService.maxFutureDate;
this.createCollectionSheetForm();
this.buildDependencies();
}
/**
* Creates the Individual Collection Sheet Form
*/
createCollectionSheetForm() {
this.collectionSheetForm = this.formBuilder.group({
officeId: [
'',
Validators.required
],
meetingDate: [
new Date(),
Validators.required
],
staffId: [
'',
Validators.required
],
groupId: [''],
centerId: ['']
});
}
/**
* Checks for the office id value change
*/
buildDependencies() {
this.collectionSheetForm.get('officeId').valueChanges.subscribe((officeId: any) => {
this.officeId = officeId;
this.organizationService.getStaffs(officeId).subscribe((response: any) => {
this.loanOfficerData = response;
});
this.organizationService.getCenters(officeId).subscribe((response: any) => {
this.centersData = response;
});
this.organizationService.getGroups(officeId).subscribe((response: any) => {
this.groupsData = response;
});
});
}
previewCollectionSheet() {
const dateFormat = this.settingsService.dateFormat;
const locale = this.settingsService.language.code;
const staffId = this.collectionSheetForm.value.staffId;
const meetingDate = this.dateUtils.formatDate(this.collectionSheetForm.value.meetingDate, dateFormat);
this.centerService
.getAllMeetingFallCenters(this.officeId, staffId, meetingDate, dateFormat, locale)
.subscribe((response: CollectionSheetData[]) => {
if (response.length > 0) {
this.meetingFallCenters = response[0].meetingFallCenters;
const payload = {
calendarId: this.meetingFallCenters[0].collectionMeetingCalendar.calendarInstanceId,
transactionDate: meetingDate,
locale,
dateFormat
};
this.collectionsService
.generateCollectionSheetData(this.meetingFallCenters[0].id, payload)
.subscribe((jlgGroupData: JLGGroupData) => {
console.log(jlgGroupData);
});
}
});
}
}
@@ -7,6 +7,7 @@ import { Route } from '../core/route/route.service';
/** Custom Components */ /** Custom Components */
import { IndividualCollectionSheetComponent } from './individual-collection-sheet/individual-collection-sheet.component'; import { IndividualCollectionSheetComponent } from './individual-collection-sheet/individual-collection-sheet.component';
import { OfficesResolver } from 'app/organization/offices/common-resolvers/offices.resolver'; import { OfficesResolver } from 'app/organization/offices/common-resolvers/offices.resolver';
import { CollectionSheetComponent } from './collection-sheet/collection-sheet.component';
const routes: Routes = [ const routes: Routes = [
Route.withShell([ Route.withShell([
@@ -24,6 +25,18 @@ const routes: Routes = [
resolve: { resolve: {
officesData: OfficesResolver officesData: OfficesResolver
} }
},
{
path: 'collection-sheet',
data: {
title: 'Collection Sheet',
breadcrumb: 'Collection Sheet',
routeParamBreadcrumb: false
},
component: CollectionSheetComponent,
resolve: {
officesData: OfficesResolver
}
} }
] ]
} }
+5 -16
View File
@@ -14,22 +14,6 @@ import { Observable } from 'rxjs';
export class CollectionsService { export class CollectionsService {
constructor(private http: HttpClient) {} constructor(private http: HttpClient) {}
/**
* Returns all the offices
*/
getOffices(): Observable<any> {
return this.http.get(`/offices`);
}
/**
* Returns the loan officer(staffs) for the particular office
* @param {officeId} OfficeId any
*/
getStaffs(officeId: any): Observable<any> {
const httpParams = new HttpParams().set('officeId', officeId).set('status', 'all');
return this.http.get(`/staff`, { params: httpParams });
}
/** /**
* Retrieves the Collection Sheet Data * Retrieves the Collection Sheet Data
* @param {data} data any * @param {data} data any
@@ -39,6 +23,11 @@ export class CollectionsService {
return this.http.post(`/collectionsheet`, data, { params: httpParams }); return this.http.post(`/collectionsheet`, data, { params: httpParams });
} }
generateCollectionSheetData(centerId: number, data: any): Observable<any> {
const httpParams = new HttpParams().set('command', 'generateCollectionSheet');
return this.http.post(`/centers/${centerId}`, data, { params: httpParams });
}
/** /**
* Executes the Save Collection Sheet Data * Executes the Save Collection Sheet Data
* @param {data} data any * @param {data} data any
@@ -16,8 +16,8 @@ import {
MatRowDef, MatRowDef,
MatRow MatRow
} from '@angular/material/table'; } from '@angular/material/table';
import { UntypedFormGroup, UntypedFormBuilder, Validators, ReactiveFormsModule } from '@angular/forms'; import { UntypedFormGroup, UntypedFormBuilder, Validators } from '@angular/forms';
import { ActivatedRoute, Router, RouterLink } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
/** Services Import */ /** Services Import */
import { CollectionsService } from '../collections.service'; import { CollectionsService } from '../collections.service';
@@ -35,6 +35,7 @@ import { SettingsService } from 'app/settings/settings.service';
import { Dates } from 'app/core/utils/dates'; import { Dates } from 'app/core/utils/dates';
import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { FaIconComponent } from '@fortawesome/angular-fontawesome';
import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module'; import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
import { OrganizationService } from 'app/organization/organization.service';
/** /**
* Individual Collection Sheet * Individual Collection Sheet
@@ -136,6 +137,7 @@ export class IndividualCollectionSheetComponent implements OnInit {
constructor( constructor(
private formBuilder: UntypedFormBuilder, private formBuilder: UntypedFormBuilder,
private collectionsService: CollectionsService, private collectionsService: CollectionsService,
private organizationService: OrganizationService,
private route: ActivatedRoute, private route: ActivatedRoute,
private dateUtils: Dates, private dateUtils: Dates,
public dialog: MatDialog, public dialog: MatDialog,
@@ -182,7 +184,7 @@ export class IndividualCollectionSheetComponent implements OnInit {
*/ */
buildDependencies() { buildDependencies() {
this.collectionSheetForm.get('officeId').valueChanges.subscribe((value: any) => { this.collectionSheetForm.get('officeId').valueChanges.subscribe((value: any) => {
this.collectionsService.getStaffs(value).subscribe((response: any) => { this.organizationService.getStaffs(value).subscribe((response: any) => {
this.loanOfficerData = response; this.loanOfficerData = response;
}); });
}); });
@@ -0,0 +1,57 @@
import { PaymentTypeOption } from 'app/shared/models/general.model';
export interface CollectionSheetData {
staffId: number;
staffName: string;
meetingFallCenters: MeetingFallCenter[];
}
export interface MeetingFallCenter {
id: number;
accountNo: string;
name: string;
officeId: number;
staffId: number;
staffName: string;
hierarchy: string;
status: Status;
active: boolean;
activationDate: number[];
collectionMeetingCalendar: CollectionMeetingCalendar;
totalCollected: number;
totalOverdue: number;
totaldue: number;
installmentDue: number;
}
export interface CollectionMeetingCalendar {
id: number;
calendarInstanceId: number;
entityId: number;
entityType: Status;
title: string;
startDate: number[];
repeating: boolean;
recurrence: string;
}
export interface Status {
id: number;
code: string;
value: string;
}
export interface JLGGroupData {
dueDate: number[];
loanProducts: any[];
savingsProducts: any[];
groups: any[];
attendanceTypeOptions: AttendanceTypeOption[];
paymentTypeOptions: PaymentTypeOption[];
}
export interface AttendanceTypeOption {
id: number;
code: string;
value: string;
}
@@ -94,6 +94,18 @@
</mat-icon> </mat-icon>
<a matLine>{{ 'labels.menus.Checker Inbox and Tasks' | translate }}</a> <a matLine>{{ 'labels.menus.Checker Inbox and Tasks' | translate }}</a>
</mat-list-item> </mat-list-item>
<mat-list-item
[routerLink]="['/collections/collection-sheet']"
[matTooltipPosition]="tooltipPosition"
matTooltip="{{ 'tooltips.Collection Sheet' | translate }}"
routerLinkActive="active-menu"
[routerLinkActiveOptions]="{ exact: false }"
>
<mat-icon matListIcon>
<i class="fa fa-tasks"></i>
</mat-icon>
<a matLine>{{ 'labels.menus.Collection Sheet' | translate }}</a>
</mat-list-item>
<mat-list-item <mat-list-item
[routerLink]="['/collections/individual-collection-sheet']" [routerLink]="['/collections/individual-collection-sheet']"
[matTooltipPosition]="tooltipPosition" [matTooltipPosition]="tooltipPosition"
@@ -702,6 +702,21 @@ export class OrganizationService {
return this.http.put(`/funds/${fundId}`, fundData); return this.http.put(`/funds/${fundId}`, fundData);
} }
getStaffs(officeId: any): Observable<any> {
const httpParams = new HttpParams().set('officeId', officeId).set('status', 'all');
return this.http.get(`/staff`, { params: httpParams });
}
getCenters(officeId: any): Observable<any> {
const httpParams = new HttpParams().set('officeId', officeId).set('status', 'all');
return this.http.get(`/centers`, { params: httpParams });
}
getGroups(officeId: any): Observable<any> {
const httpParams = new HttpParams().set('officeId', officeId).set('status', 'all');
return this.http.get(`/groups`, { params: httpParams });
}
/* /*
* @param {any} officeId ID of office to retrieve staff from. * @param {any} officeId ID of office to retrieve staff from.
* @returns {Observable<any>} Staff data. * @returns {Observable<any>} Staff data.
+3
View File
@@ -459,6 +459,7 @@
"Previous": "Předchozí", "Previous": "Předchozí",
"Print": "Tisk", "Print": "Tisk",
"Proceed": "Pokračovat", "Proceed": "Pokračovat",
"Productive Collection Sheet": "Produktivní kolekce list",
"Reactivate": "Znovu aktivujte", "Reactivate": "Znovu aktivujte",
"Recapture": "Znovu zachytit", "Recapture": "Znovu zachytit",
"Recreate": "Znovu vytvořit", "Recreate": "Znovu vytvořit",
@@ -2167,6 +2168,7 @@
"Reopened On Date": "Znovu otevřeno dne", "Reopened On Date": "Znovu otevřeno dne",
"Repaid every": "Splaceno každý", "Repaid every": "Splaceno každý",
"Repay Every": "Splatit každý", "Repay Every": "Splatit každý",
"Repayment Date": "Datum splacení",
"Repayment Info": "Informace o splácení", "Repayment Info": "Informace o splácení",
"Repayment Schedule": "Splátkový kalendář", "Repayment Schedule": "Splátkový kalendář",
"Repayment Schedule Parameters": "Parametry splátkového kalendáře", "Repayment Schedule Parameters": "Parametry splátkového kalendáře",
@@ -2555,6 +2557,7 @@
"Clients": "klienti", "Clients": "klienti",
"Close": "Zavřít", "Close": "Zavřít",
"Close (as Rescheduled)": "Zavřít (jako přeplánováno)", "Close (as Rescheduled)": "Zavřít (jako přeplánováno)",
"Collection Sheet": "Sbírkový list",
"Configuration Wizard": "Průvodce konfigurací", "Configuration Wizard": "Průvodce konfigurací",
"Contract Termination": "Ukončení smlouvy", "Contract Termination": "Ukončení smlouvy",
"Create Guarantor": "Vytvořit garanta", "Create Guarantor": "Vytvořit garanta",
+3
View File
@@ -459,6 +459,7 @@
"Previous": "Vorherige", "Previous": "Vorherige",
"Print": "Drucken", "Print": "Drucken",
"Proceed": "Fortfahren", "Proceed": "Fortfahren",
"Productive Collection Sheet": "Produktives Sammlungsblatt",
"Reactivate": "Reaktivieren", "Reactivate": "Reaktivieren",
"Recapture": "Zurückerobern", "Recapture": "Zurückerobern",
"Recreate": "Neu erstellen", "Recreate": "Neu erstellen",
@@ -2167,6 +2168,7 @@
"Reopened On Date": "Wiedereröffnet am Datum", "Reopened On Date": "Wiedereröffnet am Datum",
"Repaid every": "Alle zurückgezahlt", "Repaid every": "Alle zurückgezahlt",
"Repay Every": "Zahlen Sie alles zurück", "Repay Every": "Zahlen Sie alles zurück",
"Repayment Date": "Rückzahlungsdatum",
"Repayment Info": "Rückzahlungsinformationen", "Repayment Info": "Rückzahlungsinformationen",
"Repayment Schedule": "Rückzahlungsplan", "Repayment Schedule": "Rückzahlungsplan",
"Repayment Schedule Parameters": "Parameter des Rückzahlungsplans", "Repayment Schedule Parameters": "Parameter des Rückzahlungsplans",
@@ -2555,6 +2557,7 @@
"Clients": "Kunden", "Clients": "Kunden",
"Close": "Schließen", "Close": "Schließen",
"Close (as Rescheduled)": "Schließen (wie geplant)", "Close (as Rescheduled)": "Schließen (wie geplant)",
"Collection Sheet": "Kollektionsblatt",
"Configuration Wizard": "Konfigurationsassistent", "Configuration Wizard": "Konfigurationsassistent",
"Contract Termination": "Vertragsbeendigung", "Contract Termination": "Vertragsbeendigung",
"Create Guarantor": "Bürgen erstellen", "Create Guarantor": "Bürgen erstellen",
+3
View File
@@ -460,6 +460,7 @@
"Previous": "Previous", "Previous": "Previous",
"Print": "Print", "Print": "Print",
"Proceed": "Proceed", "Proceed": "Proceed",
"Productive Collection Sheet": "Productive Collection Sheet",
"Reactivate": "Reactivate", "Reactivate": "Reactivate",
"Recapture": "Recapture", "Recapture": "Recapture",
"Recreate": "Recreate", "Recreate": "Recreate",
@@ -2174,6 +2175,7 @@
"Reopened On Date": "Reopened On Date", "Reopened On Date": "Reopened On Date",
"Repaid every": "Repaid every", "Repaid every": "Repaid every",
"Repay Every": "Repay Every", "Repay Every": "Repay Every",
"Repayment Date": "Repayment Date",
"Repayment Info": "Repayment Info", "Repayment Info": "Repayment Info",
"Repayment Schedule": "Repayment Schedule", "Repayment Schedule": "Repayment Schedule",
"Repayment Schedule Parameters": "Repayment Schedule Parameters", "Repayment Schedule Parameters": "Repayment Schedule Parameters",
@@ -2562,6 +2564,7 @@
"Clients": "Clients", "Clients": "Clients",
"Close": "Close", "Close": "Close",
"Close (as Rescheduled)": "Close (as Rescheduled)", "Close (as Rescheduled)": "Close (as Rescheduled)",
"Collection Sheet": "Collection Sheet",
"Configuration Wizard": "Configuration Wizard", "Configuration Wizard": "Configuration Wizard",
"Contract Termination": "Contract Termination", "Contract Termination": "Contract Termination",
"Create Guarantor": "Create Guarantor", "Create Guarantor": "Create Guarantor",
+3
View File
@@ -459,6 +459,7 @@
"Previous": "Anterior", "Previous": "Anterior",
"Print": "Imprimir", "Print": "Imprimir",
"Proceed": "Proceder", "Proceed": "Proceder",
"Productive Collection Sheet": "Hoja de Recolección Productiva",
"Reactivate": "Reactivar", "Reactivate": "Reactivar",
"Recapture": "Reconquista", "Recapture": "Reconquista",
"Recreate": "Recrear", "Recreate": "Recrear",
@@ -2167,6 +2168,7 @@
"Reopened On Date": "Reabierto en la fecha", "Reopened On Date": "Reabierto en la fecha",
"Repaid every": "Frecuencia de Pago", "Repaid every": "Frecuencia de Pago",
"Repay Every": "Paga cada", "Repay Every": "Paga cada",
"Repayment Date": "Fecha de reembolso",
"Repayment Info": "Información de pago", "Repayment Info": "Información de pago",
"Repayment Schedule": "Calendario de pagos", "Repayment Schedule": "Calendario de pagos",
"Repayment Schedule Parameters": "Parámetros del calendario de pagos", "Repayment Schedule Parameters": "Parámetros del calendario de pagos",
@@ -2555,6 +2557,7 @@
"Clients": "Clientes", "Clients": "Clientes",
"Close": "Cerrar", "Close": "Cerrar",
"Close (as Rescheduled)": "Cerrar (según reprogramado)", "Close (as Rescheduled)": "Cerrar (según reprogramado)",
"Collection Sheet": "Hoja de colección",
"Configuration Wizard": "Asistente de configuración", "Configuration Wizard": "Asistente de configuración",
"Contract Termination": "Terminación del contrato", "Contract Termination": "Terminación del contrato",
"Create Guarantor": "Crear garante", "Create Guarantor": "Crear garante",
+3
View File
@@ -459,6 +459,7 @@
"Previous": "Anterior", "Previous": "Anterior",
"Print": "Imprimir", "Print": "Imprimir",
"Proceed": "Proceder", "Proceed": "Proceder",
"Productive Collection Sheet": "Hoja de Recolección Productiva",
"Reactivate": "Reactivar", "Reactivate": "Reactivar",
"Recapture": "Reconquista", "Recapture": "Reconquista",
"Recreate": "Recrear", "Recreate": "Recrear",
@@ -2167,6 +2168,7 @@
"Reopened On Date": "Reabierto en la fecha", "Reopened On Date": "Reabierto en la fecha",
"Repaid every": "Frecuencia de Pago", "Repaid every": "Frecuencia de Pago",
"Repay Every": "Paga cada", "Repay Every": "Paga cada",
"Repayment Date": "Fecha de reembolso",
"Repayment Info": "Información de pago", "Repayment Info": "Información de pago",
"Repayment Schedule": "Calendario de pagos", "Repayment Schedule": "Calendario de pagos",
"Repayment Schedule Parameters": "Parámetros del calendario de pagos", "Repayment Schedule Parameters": "Parámetros del calendario de pagos",
@@ -2556,6 +2558,7 @@
"Clients": "Clientes", "Clients": "Clientes",
"Close": "Cerrar", "Close": "Cerrar",
"Close (as Rescheduled)": "Cerrar (según reprogramado)", "Close (as Rescheduled)": "Cerrar (según reprogramado)",
"Collection Sheet": "Hoja de colección",
"Configuration Wizard": "Asistente de configuración", "Configuration Wizard": "Asistente de configuración",
"Contract Termination": "Terminación del contrato", "Contract Termination": "Terminación del contrato",
"Create Guarantor": "Crear garante", "Create Guarantor": "Crear garante",
+3
View File
@@ -459,6 +459,7 @@
"Previous": "Précédent", "Previous": "Précédent",
"Print": "Imprimer", "Print": "Imprimer",
"Proceed": "Procéder", "Proceed": "Procéder",
"Productive Collection Sheet": "Fiche de collecte productive",
"Reactivate": "Réactiver", "Reactivate": "Réactiver",
"Recapture": "Reprise", "Recapture": "Reprise",
"Recreate": "Recréer", "Recreate": "Recréer",
@@ -2167,6 +2168,7 @@
"Reopened On Date": "Réouvert à la date", "Reopened On Date": "Réouvert à la date",
"Repaid every": "Remboursé tous les", "Repaid every": "Remboursé tous les",
"Repay Every": "Rembourser tous les", "Repay Every": "Rembourser tous les",
"Repayment Date": "Date de remboursement",
"Repayment Info": "Informations de remboursement", "Repayment Info": "Informations de remboursement",
"Repayment Schedule": "Calendrier de remboursement", "Repayment Schedule": "Calendrier de remboursement",
"Repayment Schedule Parameters": "Paramètres du calendrier de remboursement", "Repayment Schedule Parameters": "Paramètres du calendrier de remboursement",
@@ -2555,6 +2557,7 @@
"Clients": "Clientèle", "Clients": "Clientèle",
"Close": "Fermer", "Close": "Fermer",
"Close (as Rescheduled)": "Clôture (comme prévu)", "Close (as Rescheduled)": "Clôture (comme prévu)",
"Collection Sheet": "Fiche de collecte",
"Configuration Wizard": "Assistant de configuration", "Configuration Wizard": "Assistant de configuration",
"Contract Termination": "Résiliation du contrat", "Contract Termination": "Résiliation du contrat",
"Create Guarantor": "Créer un garant", "Create Guarantor": "Créer un garant",
+3
View File
@@ -459,6 +459,7 @@
"Previous": "Precedente", "Previous": "Precedente",
"Print": "Stampa", "Print": "Stampa",
"Proceed": "Procedere", "Proceed": "Procedere",
"Productive Collection Sheet": "Foglio di raccolta produttiva",
"Reactivate": "Riattivare", "Reactivate": "Riattivare",
"Recapture": "Riconquistare", "Recapture": "Riconquistare",
"Recreate": "Ricreare", "Recreate": "Ricreare",
@@ -2167,6 +2168,7 @@
"Reopened On Date": "Riaperto in data", "Reopened On Date": "Riaperto in data",
"Repaid every": "Rimborsato ogni", "Repaid every": "Rimborsato ogni",
"Repay Every": "Rimborsare ogni", "Repay Every": "Rimborsare ogni",
"Repayment Date": "Data di rimborso",
"Repayment Info": "Informazioni sul rimborso", "Repayment Info": "Informazioni sul rimborso",
"Repayment Schedule": "Programma di rimborso", "Repayment Schedule": "Programma di rimborso",
"Repayment Schedule Parameters": "Parametri del programma di rimborso", "Repayment Schedule Parameters": "Parametri del programma di rimborso",
@@ -2555,6 +2557,7 @@
"Clients": "Clienti", "Clients": "Clienti",
"Close": "Vicino", "Close": "Vicino",
"Close (as Rescheduled)": "Chiudi (come riprogrammato)", "Close (as Rescheduled)": "Chiudi (come riprogrammato)",
"Collection Sheet": "Foglio di raccolta",
"Configuration Wizard": "Procedura guidata di configurazione", "Configuration Wizard": "Procedura guidata di configurazione",
"Contract Termination": "Risoluzione del contratto", "Contract Termination": "Risoluzione del contratto",
"Create Guarantor": "Creare Garante", "Create Guarantor": "Creare Garante",
+3
View File
@@ -459,6 +459,7 @@
"Previous": "이전의", "Previous": "이전의",
"Print": "인쇄", "Print": "인쇄",
"Proceed": "진행하다", "Proceed": "진행하다",
"Productive Collection Sheet": "생산적인 컬렉션 시트",
"Reactivate": "재활성화", "Reactivate": "재활성화",
"Recapture": "탈환", "Recapture": "탈환",
"Recreate": "재창조", "Recreate": "재창조",
@@ -2168,6 +2169,7 @@
"Reopened On Date": "재개장 날짜", "Reopened On Date": "재개장 날짜",
"Repaid every": "마다 상환", "Repaid every": "마다 상환",
"Repay Every": "매일 상환", "Repay Every": "매일 상환",
"Repayment Date": "상환일",
"Repayment Info": "상환정보", "Repayment Info": "상환정보",
"Repayment Schedule": "상환 일정", "Repayment Schedule": "상환 일정",
"Repayment Schedule Parameters": "상환 일정 매개변수", "Repayment Schedule Parameters": "상환 일정 매개변수",
@@ -2556,6 +2558,7 @@
"Clients": "클라이언트", "Clients": "클라이언트",
"Close": "닫다", "Close": "닫다",
"Close (as Rescheduled)": "마감(일정 변경됨)", "Close (as Rescheduled)": "마감(일정 변경됨)",
"Collection Sheet": "수집 시트",
"Configuration Wizard": "구성 마법사", "Configuration Wizard": "구성 마법사",
"Contract Termination": "계약 종료", "Contract Termination": "계약 종료",
"Create Guarantor": "보증인 만들기", "Create Guarantor": "보증인 만들기",
+3
View File
@@ -459,6 +459,7 @@
"Previous": "Ankstesnis", "Previous": "Ankstesnis",
"Print": "Spausdinti", "Print": "Spausdinti",
"Proceed": "Tęskite", "Proceed": "Tęskite",
"Productive Collection Sheet": "Produktyvus surinkimo lapas",
"Reactivate": "Iš naujo suaktyvinkite", "Reactivate": "Iš naujo suaktyvinkite",
"Recapture": "Susigrąžinti", "Recapture": "Susigrąžinti",
"Recreate": "Atkurti", "Recreate": "Atkurti",
@@ -2167,6 +2168,7 @@
"Reopened On Date": "Iš naujo atidaryta datą", "Reopened On Date": "Iš naujo atidaryta datą",
"Repaid every": "Atlygino kiekvieną", "Repaid every": "Atlygino kiekvieną",
"Repay Every": "Atlyginkite kiekvieną", "Repay Every": "Atlyginkite kiekvieną",
"Repayment Date": "Grąžinimo data",
"Repayment Info": "Informacija apie grąžinimą", "Repayment Info": "Informacija apie grąžinimą",
"Repayment Schedule": "Grąžinimo grafikas", "Repayment Schedule": "Grąžinimo grafikas",
"Repayment Schedule Parameters": "Grąžinimo grafiko parametrai", "Repayment Schedule Parameters": "Grąžinimo grafiko parametrai",
@@ -2555,6 +2557,7 @@
"Clients": "Klientai", "Clients": "Klientai",
"Close": "Uždaryti", "Close": "Uždaryti",
"Close (as Rescheduled)": "Uždaryti (kaip suplanuota)", "Close (as Rescheduled)": "Uždaryti (kaip suplanuota)",
"Collection Sheet": "Kolekcijos lapas",
"Configuration Wizard": "Konfigūracijos vedlys", "Configuration Wizard": "Konfigūracijos vedlys",
"Contract Termination": "Sutarties nutraukimas", "Contract Termination": "Sutarties nutraukimas",
"Create Guarantor": "Sukurti garantą", "Create Guarantor": "Sukurti garantą",
+3
View File
@@ -459,6 +459,7 @@
"Previous": "Iepriekšējais", "Previous": "Iepriekšējais",
"Print": "Drukāt", "Print": "Drukāt",
"Proceed": "Turpināt", "Proceed": "Turpināt",
"Productive Collection Sheet": "Produktīva kolekcijas lapa",
"Reactivate": "Atkārtoti aktivizēt", "Reactivate": "Atkārtoti aktivizēt",
"Recapture": "Atgūšana", "Recapture": "Atgūšana",
"Recreate": "Atjaunot", "Recreate": "Atjaunot",
@@ -2167,6 +2168,7 @@
"Reopened On Date": "Atkārtoti atvērts datumā", "Reopened On Date": "Atkārtoti atvērts datumā",
"Repaid every": "Atmaksāja katru", "Repaid every": "Atmaksāja katru",
"Repay Every": "Atmaksāt katru", "Repay Every": "Atmaksāt katru",
"Repayment Date": "Atmaksas datums",
"Repayment Info": "Informācija par atmaksu", "Repayment Info": "Informācija par atmaksu",
"Repayment Schedule": "Atmaksas grafiks", "Repayment Schedule": "Atmaksas grafiks",
"Repayment Schedule Parameters": "Atmaksas grafika parametri", "Repayment Schedule Parameters": "Atmaksas grafika parametri",
@@ -2555,6 +2557,7 @@
"Clients": "Klienti", "Clients": "Klienti",
"Close": "Aizvērt", "Close": "Aizvērt",
"Close (as Rescheduled)": "Aizvērt (kā pārplānots)", "Close (as Rescheduled)": "Aizvērt (kā pārplānots)",
"Collection Sheet": "Kolekcijas lapa",
"Configuration Wizard": "Konfigurācijas vednis", "Configuration Wizard": "Konfigurācijas vednis",
"Contract Termination": "Līguma laušana", "Contract Termination": "Līguma laušana",
"Create Guarantor": "Izveidojiet galvotāju", "Create Guarantor": "Izveidojiet galvotāju",
+3
View File
@@ -459,6 +459,7 @@
"Previous": "अघिल्लो", "Previous": "अघिल्लो",
"Print": "छाप्नुहोस्", "Print": "छाप्नुहोस्",
"Proceed": "अगाडि बढ्नुहोस्", "Proceed": "अगाडि बढ्नुहोस्",
"Productive Collection Sheet": "उत्पादक संग्रह पाना",
"Reactivate": "पुन: सक्रिय गर्नुहोस्", "Reactivate": "पुन: सक्रिय गर्नुहोस्",
"Recapture": "पुन: कब्जा", "Recapture": "पुन: कब्जा",
"Recreate": "पुन: सिर्जना गर्नुहोस्", "Recreate": "पुन: सिर्जना गर्नुहोस्",
@@ -2167,6 +2168,7 @@
"Reopened On Date": "मितिमा पुन: खोलियो", "Reopened On Date": "मितिमा पुन: खोलियो",
"Repaid every": "प्रत्येक चुक्ता", "Repaid every": "प्रत्येक चुक्ता",
"Repay Every": "प्रत्येक तिर्नुहोस्", "Repay Every": "प्रत्येक तिर्नुहोस्",
"Repayment Date": "भुक्तानी मिति",
"Repayment Info": "भुक्तानी जानकारी", "Repayment Info": "भुक्तानी जानकारी",
"Repayment Schedule": "पुन: भुक्तानी तालिका", "Repayment Schedule": "पुन: भुक्तानी तालिका",
"Repayment Schedule Parameters": "भुक्तानी तालिका प्यारामिटरहरू", "Repayment Schedule Parameters": "भुक्तानी तालिका प्यारामिटरहरू",
@@ -2555,6 +2557,7 @@
"Clients": "ग्राहकहरु", "Clients": "ग्राहकहरु",
"Close": "बन्द गर्नुहोस्", "Close": "बन्द गर्नुहोस्",
"Close (as Rescheduled)": "बन्द (पुन: तालिका अनुसार)", "Close (as Rescheduled)": "बन्द (पुन: तालिका अनुसार)",
"Collection Sheet": "संग्रह पाना",
"Configuration Wizard": "कन्फिगरेसन विजार्ड", "Configuration Wizard": "कन्फिगरेसन विजार्ड",
"Contract Termination": "सम्झौता समाप्ति", "Contract Termination": "सम्झौता समाप्ति",
"Create Guarantor": "ग्यारेन्टर सिर्जना गर्नुहोस्", "Create Guarantor": "ग्यारेन्टर सिर्जना गर्नुहोस्",
+3
View File
@@ -459,6 +459,7 @@
"Previous": "Anterior", "Previous": "Anterior",
"Print": "Imprimir", "Print": "Imprimir",
"Proceed": "Continuar", "Proceed": "Continuar",
"Productive Collection Sheet": "Folha de Coleta Produtiva",
"Reactivate": "Reativar", "Reactivate": "Reativar",
"Recapture": "Recaptura", "Recapture": "Recaptura",
"Recreate": "Recriar", "Recreate": "Recriar",
@@ -2167,6 +2168,7 @@
"Reopened On Date": "Reaberto na data", "Reopened On Date": "Reaberto na data",
"Repaid every": "Reembolsado a cada", "Repaid every": "Reembolsado a cada",
"Repay Every": "Reembolsar cada", "Repay Every": "Reembolsar cada",
"Repayment Date": "Data de reembolso",
"Repayment Info": "Informações de reembolso", "Repayment Info": "Informações de reembolso",
"Repayment Schedule": "Cronograma de Reembolso", "Repayment Schedule": "Cronograma de Reembolso",
"Repayment Schedule Parameters": "Parâmetros do Cronograma de Reembolso", "Repayment Schedule Parameters": "Parâmetros do Cronograma de Reembolso",
@@ -2555,6 +2557,7 @@
"Clients": "Clientes", "Clients": "Clientes",
"Close": "Fechar", "Close": "Fechar",
"Close (as Rescheduled)": "Fechar (conforme reprogramado)", "Close (as Rescheduled)": "Fechar (conforme reprogramado)",
"Collection Sheet": "Folha de coleta",
"Configuration Wizard": "Assistente de configuração", "Configuration Wizard": "Assistente de configuração",
"Contract Termination": "Rescisão de contrato", "Contract Termination": "Rescisão de contrato",
"Create Guarantor": "Criar fiador", "Create Guarantor": "Criar fiador",
+3
View File
@@ -459,6 +459,7 @@
"Previous": "Iliyotangulia", "Previous": "Iliyotangulia",
"Print": "Chapisha", "Print": "Chapisha",
"Proceed": "Endelea", "Proceed": "Endelea",
"Productive Collection Sheet": "Karatasi ya Ukusanyaji Yenye Tija",
"Reactivate": "Anzisha tena", "Reactivate": "Anzisha tena",
"Recapture": "Kukamata tena", "Recapture": "Kukamata tena",
"Recreate": "Unda upya", "Recreate": "Unda upya",
@@ -2167,6 +2168,7 @@
"Reopened On Date": "Ilifunguliwa tena Tarehe", "Reopened On Date": "Ilifunguliwa tena Tarehe",
"Repaid every": "Kulipwa kila", "Repaid every": "Kulipwa kila",
"Repay Every": "Rejesha Kila", "Repay Every": "Rejesha Kila",
"Repayment Date": "Tarehe ya Marejesho",
"Repayment Info": "Taarifa za Urejeshaji", "Repayment Info": "Taarifa za Urejeshaji",
"Repayment Schedule": "Ratiba ya Marejesho", "Repayment Schedule": "Ratiba ya Marejesho",
"Repayment Schedule Parameters": "Vigezo vya Ratiba ya Marejesho", "Repayment Schedule Parameters": "Vigezo vya Ratiba ya Marejesho",
@@ -2556,6 +2558,7 @@
"Close": "Funga", "Close": "Funga",
"Close (as Rescheduled)": "Funga (Kama Ilivyoratibiwa Upya)", "Close (as Rescheduled)": "Funga (Kama Ilivyoratibiwa Upya)",
"Configuration Wizard": "Mchawi wa Usanidi", "Configuration Wizard": "Mchawi wa Usanidi",
"Collection Sheet": "Karatasi ya Mkusanyiko",
"Contract Termination": "Kusitishwa kwa Mkataba", "Contract Termination": "Kusitishwa kwa Mkataba",
"Create Guarantor": "Unda Mdhamini", "Create Guarantor": "Unda Mdhamini",
"Create Journal Entry": "Unda Ingizo la Jarida", "Create Journal Entry": "Unda Ingizo la Jarida",